所以我有一小段代码由于某种原因不想实际工作。我一直试图找出原因,但无济于事。
$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 变量上的辅助分配方面的提示。在循环执行期间就是这种情况,因为我有一个条件语句可以检查数据库的另一部分,但仅限于某些条件。对于这样的小条件检查,我可能应该坚持使用准备好的语句。