PHP中的错误消息:“警告:mysqli_num_rows()期望参数1为mysqli_result,boolean ...”

时间:2013-10-21 13:18:56

标签: php

这很令人尴尬,但我正在尝试运行相同的脚本,我以前遇到过错误。我已经完成了对此错误消息的搜索,但不知道我需要做些什么来修复此特定脚本。

完整的错误消息是:

  

警告:mysqli_num_rows()要求参数1为mysqli_result,布尔值在第59行的C:\ Program Files \ Abyss Web Server \ htdocs \ login_tools.php中给出

脚本的这一部分似乎被列为警告的来源。

  

if(mysqli_num_rows($ r)== 1)

以下较大的部分:

if ( empty( $errors ))
{
 $q = "SELECT user_id, first_name, last_name, 
       FROM users
       WHERE email = '$e'
       AND pass = SHA1( '$p' ) " ;

$r = mysqli_query ( $dbc , $q ) ;

if ( mysqli_num_rows( $r ) == 1 )
 {
  $row = mysqli_fetch_array ( $r , MYSQLI_ASSOC ) ;
  return array( true , $row ) ;
 }

else

 { $errors[] = 'Email address and password not found.' ; } 

}

return array( false , $errors ) ;  }

?>    

2 个答案:

答案 0 :(得分:1)

SQL 代码中的

错误:

$q = "SELECT user_id, first_name, last_name**,** 
       FROM users
       WHERE email = '$e'
       AND pass = SHA1( '$p' ) " ;

将其更正为

$q = "SELECT user_id, first_name, last_name 
       FROM users
       WHERE email = '".$e."'
       AND pass = SHA1( '".$p."' ) " ;

在“ last_name ”字样后删除“”标记

答案 1 :(得分:1)

这是因为

if ( $r = mysqli_query ( $dbc , $q ) ) {
    // got something!
    }

返回FALSE。在将其用作结果集之前,必须测试返回值。您的SQL声明中有错误。您在查询中的last_name列后添加了不必要的逗号。

在您的代码中使用它之前,请务必先测试该查询。