为什么这个MySQL Select查询返回错误,但完成Select完全正常?

时间:2011-09-03 02:22:15

标签: php mysql mysqli

我有一个带有MySQL SELECT的PHP:

$q = "SELECT signup_id, email 
        FROM signups 
       LIMIT ". $inNum;
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));

if (mysqli_affected_rows($dbc) >= 1) {
    while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {

这是我收到的错误:

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

我不确定为什么我收到此错误,因为代码运行正常。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

在我看来,您将$r的值设置为or的布尔值,因此正在处理结果数组并抛出错误,因为{{ 1}}看起来它只是一个布尔值。我可能错了,但开始时看起来很混乱。

答案 1 :(得分:1)

mysqli_affected_rows()

  

返回受上一次INSERT,UPDATE,REPLACE或DELETE查询影响的行数。

更改为mysqli_num_rows并传递查询结果:

$q = "SELECT signup_id, email FROM signups LIMIT ".$inNum;
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc));

if (mysqli_num_rows($r) >= 1) {
    while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {

答案 2 :(得分:1)

Matt和Tony如果把它们放在一起听起来就像是一个很好的答案。

 if ($r = mysqli_query( ... )) {
      if (mysql_num_rows($r) >= 1) {
           while ($row = mysql_fetch_array($r, ..) { 
                 ...
           } 
      }
 }