我是PHP和MySQL的初学者。
我正在尝试与用户一起创建一个基本网站。现在我正在创建登录页面,我正在使用以下两行,其中mysqli_fetch_array()
只是为了查看是否有任何用户为$_POST['user']
并传递为{{1 }}:
$_POST['pass']
出现错误时
警告: mysqli_fetch_array()要求参数1为mysqli_result,在 D:\ xampp1.8.3 \ htdocs \ hkmschat \ default.php 中给出布尔 > 65
为什么这个语句是boolean?我在同一个脚本中多次使用$query = mysqli_query($con,"SELECT * FROM persons WHERE user='" . $_POST['user'] . "' AND pass=ENCODE('" . $_POST['pass'] . "',passcode)");
while(mysqli_fetch_array($query)) // line 65
// ..
和非常相似的查询进行其他验证,但是没有一个返回类似这样的内容。< / p>
我知道其中有很多这些,但我还没有找到一个已经回答了这个问题。如果你可以请我重新定向一个好的答案或回答这个问题,那将不胜感激。
感谢。
答案 0 :(得分:1)
您的查询失败并返回错误值。
将这个放在你的mysqli_query()之后,看看是怎么回事。
if (!$query) {
printf("Error: %s\n", mysqli_error($con));
exit();
}
了解更多信息。
http://www.php.net/manual/en/mysqli.error.php
请在执行
之前尝试打印查询答案 1 :(得分:1)
你应该这样做:
while($res = mysqli_fetch_array($query)){
echo $res['user'];
//Etc...
}
如果不将其设置为变量,代码将返回布尔值。
变量$res[]
是一个包含找到的行的所有字段的数组。
此外,您的代码可以通过SQL注入,因此 危险 ,请参阅此文章:SQL Injections