我想创建一个函数,它返回数组中mysqli查询的所有结果。
function Get(){
// verification... verification...
$res = $this -> link -> query("SELECT " . $select . " FROM " . $from);
while ($res->fetch_assoc())
{
$row[] = $res->fetch_assoc();
}
return $row;
}
i = 0;
var_dump(Get());
while只返回1,3,5,7,9结果
有人可以解释一下结果吗?
答案 0 :(得分:3)
你做两次$ ref-> fetch_assoc();
while ($result = $res->fetch_assoc())
{
$row[] = $result;
}
答案 1 :(得分:0)
您应该更改代码并运行:
while ($result = $res->fetch_assoc())
{
$row[] = $result;
}
说明:
在你的循环代码中,你有while ($res->fetch_assoc())
是什么使得第一条记录从你的结果中获取,并且它被检查是否该记录在数据库中(它没有记录{{1} } return false和loop isn不再执行。但是你不能将这个结果分配给任何变量,所以这个结果很简单就消失了。然后在你的循环中你使用fetch_assoc
所以你从第二个记录中取出现在循环正在重新执行。这就是它的工作方式。
答案 2 :(得分:0)
$res->fetch_assoc()
调用从结果集返回单行,并将结果集的内部指针递增1。由于您每fetch_assoc
次来电呼叫Get()
几次,因此您的结果并非您所期望的。如果您想获得一行结果,请拨打fetch_assoc
一次。如果您想从结果集中返回所有行,请执行以下操作:
function Get(){
// verification... verification...
$res = $this -> link -> query("SELECT " . $select . " FROM " . $from);
$rows = array();
while( $row = $res->fetch_assoc() ) {
$rows[] = $row;
}
return $rows;
}
var_dump(Get());