“select * from users where user ='username'和pass ='password'” - 为什么这个mysql语句是boolean

时间:2013-09-08 13:45:57

标签: php mysql

我是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>

我知道其中有很多这些,但我还没有找到一个已经回答了这个问题。如果你可以请我重新定向一个好的答案或回答这个问题,那将不胜感激。

感谢。

2 个答案:

答案 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