PHP中的错误消息:mysqli_fetch_array()需要参数1

时间:2013-03-03 00:29:34

标签: php mysql error-handling mysqli

我一直收到错误消息:

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in

我已经尝试了一切我能想到的东西让它消失但似乎没有任何效果。有什么帮助吗?

<?php
$query = "SELECT * FROM table WHERE today = 'No' AND number_of_addresses < 26 ORDER BY table_id DESC" ;
$result = mysqli_query($dbc, $query) or die("Error: ".mysqli_error($dbc)) ;
$number = mysqli_num_rows($result) ;

if ($number >= 1) {

    while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
        //Do stuff
    }

}
?>

1 个答案:

答案 0 :(得分:1)

您应该在MySQL命令行中或通过像Navicat Lite这样的SQL客户端测试您的查询。至于PHP,我建议使用面向对象的样式。比程序风格更容易使用。 (http://www.php.net/manual/en/mysqli.query.php)。

但是,对于num_rows检查,我建议使用“if(!empty($ number))”以防它返回FALSE或其他错误。 (http://www.php.net/manual/en/mysqli-result.num-rows.php

您不需要在fetch_array函数中指定第二个参数,因为您使用的值是它默认的值。我会将你的代码更改为...

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$sql = "SELECT * FROM table WHERE today = 'No' AND number_of_addresses < 26 ORDER BY table_id DESC";
$result = $mysqli->query($sql);

if (is_object($result) && !empty($result->num_rows)) {
  while ($row = $result->fetch_array()) {
    //Do stuff
  }
}