gpt4 book ai didi

PHP 内爆值

转载 作者:行者123 更新时间:2023-12-03 23:06:15 25 4
gpt4 key购买 nike

如何从下面的数组中获取单个值?第 19 行的当前结果就像 19 重复两次一样;

E:/database/users/1919/

我只需要 19,所以 URL 看起来像这样;

E:/database/users/19/

<?php
$db = new SQLite3('C:/inetpub/wwwroot/database.db');
$row = $db->query('select id from users');
while ($lastrow = $row->fetchArray())
{
$id = implode($lastrow);
}
$database = 'E:/database/users/'.$id.'/';
?>

最佳答案

SQLite3Result::fetchArray默认情况下使用 SQLITE3_BOTH 模式,该模式返回所选列的 0 索引关联数组。

这意味着您将收到如下值:

$lastrow = array(
0 => '19',
'id' => '19'
);

要解决此问题,您只需更改 fetchArray 即可使用 SQLITE3_NUMSQLITE3_ASSOC 检索单个值。

$row = $db->query('select id from users');
while ($lastrow = $row->fetchArray(SQLITE3_NUM)) {
$id = implode($lastrow);
//list($id) = $lastrow; //alternative to implode
}
$database = 'E:/database/users/'.$id.'/';

或者,您只需要指定要检索的列名称,而不是使用 implode

$row = $db->query('select id from users');
while ($lastrow = $row->fetchArray()) {
$id = $lastrow['id'];
}
$database = 'E:/database/users/'.$id.'/';

由于您似乎只需要最后一行,因此我建议更改您的查询以提高整体性能。

SELECT MAX(id) FROM users 

SELECT id FROM users ORDER BY id DESC LIMIT 1 

允许您检索最后一个 ID,而无需迭代整个用户表。

if ($row = $db->query('SELECT MAX(id) FROM users')) {
if ($row->numColumns()) {
list($id) = $row->fetchArray(SQLITE3_NUM);
$database = 'E:/database/users/'.$id.'/';
}
}

关于PHP 内爆值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54661928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com