这很令人尴尬,但我正在尝试运行相同的脚本,我以前遇到过错误。我已经完成了对此错误消息的搜索,但不知道我需要做些什么来修复此特定脚本。
完整的错误消息是:
警告: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 ) ; }
?>
答案 0 :(得分:1)
错误:
$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
列后添加了不必要的逗号。
在您的代码中使用它之前,请务必先测试该查询。