1

所以我有一小段代码由于某种原因不想实际工作。我一直试图找出原因,但无济于事。

$mysqli =& db::connect();

$sql = "SELECT * FROM `my_table`";
$result = $mysqli->query($sql);
if( ! $result ) die( "SQL Error ($mysqli->errno): $mysqli->error" );
while($row = $result->fetch_assoc())
{
//Do something here
}

我收到以下错误:

PHP 致命错误:在非对象上调用成员函数 fetch_assoc()

尝试运行该脚本时。

有什么建议么?

编辑:如有必要,请提供更多信息:我要查询的表中有 174 条记录。运行 PHP 5.3 和 MySQL 5.1。我可以在 phpMyAdmin 中毫无问题地运行相同的查询。

编辑 2:是的,这是完整的查询。这是 var_dump 的结果:

object(mysqli_result)#2 (5) { 
    ["current_field"]=> int(0) 
    ["field_count"]=> int(16) 
    ["lengths"]=> NULL 
    ["num_rows"]=> int(174) 
    ["type"]=> int(0) 
} 

编辑3:剪掉它,因为它根本没有用。

编辑4:

我似乎找不到任何关于为什么不能在 while 循环中使用 mysqli_result 对象的信息。我找到的每个答案最终都会回到“确保你有一个 mysqli_result”,从上面的 var_dump 可以看出,我肯定会这样做。稍后我将不得不回到这一点,但任何建议都会很棒。

编辑5:

感谢@Quassnoi 在检查 $result 变量上的辅助分配方面的提示。在循环执行期间就是这种情况,因为我有一个条件语句可以检查数据库的另一部分,但仅限于某些条件。对于这样的小条件检查,我可能应该坚持使用准备好的语句。

4

0 回答 0