-1

我是 PHP 和 MySQL 的初学者。

我正在尝试与用户创建一个基本站点。现在我正在创建登录页面,我正在使用以下两行,其中mysqli_fetch_array()只是查看是否有任何用户为$_POST['user']并传递为$_POST['pass']

$query = mysqli_query($con,"SELECT * FROM persons WHERE user='" . $_POST['user'] . "' AND pass=ENCODE('" . $_POST['pass'] . "',passcode)");
while(mysqli_fetch_array($query)) // line 65
    // ..

有错误的时候

警告: mysqli_fetch_array() 期望参数 1 为 mysqli_result,布尔值在D:\xampp1.8.3\htdocs\hkmschat\default.php65行给出

为什么这个语句是布尔值?mysqli_fetch_array()在同一个脚本中多次使用非常相似的查询来进行其他验证,但没有一个返回这样的结果。

我知道那里有很多这样的,但我还没有找到一个回答这个问题的人。如果您可以将我重定向到一个好的答案或回答这个问题,那将不胜感激。

谢谢。

4

2 回答 2

1

您的查询失败并返回错误值。

把它放在你的 mysqli_query() 之后看看发生了什么。

if (!$query) {
    printf("Error: %s\n", mysqli_error($con));
    exit();
}

了解更多信息。

http://www.php.net/manual/en/mysqli.error.php

在执行之前,请始终尝试打印查询

于 2013-09-08T13:48:50.733 回答
1

你应该这样做:

while($res = mysqli_fetch_array($query)){
   echo $res['user'];
   //Etc...
}

如果您不将其设置为变量,代码将返回布尔值。

该变量$res[]是一个数组,其中包含找到的行的所有字段。

此外,您的代码可以通过 SQL 注入,因此很危险,请参阅这篇文章:SQL 注入

于 2013-09-08T13:49:04.783 回答