2014-09-12 48 views
0

最近,我一直在为我的网站编写一些代码。通常,我不用担心这些代码,但它突然开始出现问题。我使用mysqli_fetch_array从我的数据库中选择一些数值,但它返回的错误:mysqli_fetch_array问题 - 布尔代替mysqli_result

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given. 

我猜我们都见过这个错误,但我不能缝摆脱它。它所涉及的代码如下:

if (!empty($emailAddressGET) && !empty($passwordGET)) { 

    $infoGet = mysqli_query($dbConnect, "SELECT * FROM users WHERE emailAddress = '".$emailAddress."'"); 

    while ($row = mysqli_fetch_array($infoGet, MYSQLI_ASSOC)) { //BUG LINE 

     //Code for setting cookies, checking values etc here 

    } 
} 

如何防止发生此错误?

+2

'mysqli_query'返回'FALSE on failure',它是作为第一个参数(参数)传递给'mysqli_fetch_array'的'boolean'值。调试你的代码。另外你为什么要检查'$ emailAddressGET',然后应用'$ emailAddress'而不用'GET'? – Ohgodwhy 2014-09-12 22:56:13

+0

GET的值直接来自输入。无值是降低版本的值,或者密码将使用sha1();. – 2014-09-12 23:03:46

+0

投票结束,即使重复是关于ext/mysql而不是ext/mysqli。但是解决方案对于两者都是一样的。 – 2014-09-12 23:51:48

回答

0

基本上,如果你有这个问题,这意味着你的请求失败。 所以我建议你通过例如步调试您的请求步骤,你可以改变你的要求弄成这个样子:

$infoGet = mysqli_query($dbConnect, "SELECT * FROM users"); 

如果错误没有显示它意味着错误是在条件侧。在这种情况下,字段名称(emailAddress)与您表格中的字段名称不匹配,或者变量$ emailAddress包含一些未清理的信息。

+0

会有什么,如:mysqli_real_escape_string();或strtolower();影响代码? – 2014-09-12 23:24:47