Sql结果作为布尔值而不是资源返回

时间:2014-06-03 17:15:53

标签: php mysql sql

以下是php代码,我将介绍解释错误发生的位置

//getting the aisles for the list via mysql query
for($i = 0; $i < $size; $i++){

size是前一个数组的计数

$sql = "SELECT Aisle FROM `Items` WHERE `Store_ID` = $storeid AND `Name`= {$items[$i]}";
print("i=$i");
$result= mysql_query($sql, $link);
print("'items[$i]' is $items[$i]");
print("$sql");

$temp= mysql_fetch_assoc($result);

结果以布尔值

返回
$aisle= $temp["Aisle"];
$aisles[$i] = $aisle;
print(current($aisles));
mysql_free_result($result);
}

这是错误代码

5SELECT storeid FROM ListNames WHERE user_id = 1 AND listname =&#39; test&#39; 2i = 0&#39; items [0]&#39;是SELECT Aisle FROM Items WHERE Store_ID = 2 AND Name = 警告:mysql_fetch_assoc()期望参数1是资源,第66行/home2/ctshaw96/public_html/scripts/getAisles.php中给出的布尔值

警告:mysql_free_result()要求参数1为资源,布线在第70行的/home2/ctshaw96/public_html/scripts/getAisles.php中给出 I = 1&#39;项目[1]&#39;是SELECT Aisle FROM Items WHERE Store_ID = 2 AND Name = 警告:mysql_fetch_assoc()期望参数1是资源,第66行/home2/ctshaw96/public_html/scripts/getAisles.php中给出的布尔值

警告:mysql_free_result()要求参数1为资源,布线在第70行的/home2/ctshaw96/public_html/scripts/getAisles.php中给出 I = 2&#39;项目[2]&#39;是SELECT Aisle FROM Items WHERE Store_ID = 2 AND Name = 警告:mysql_fetch_assoc()期望参数1是资源,第66行/home2/ctshaw96/public_html/scripts/getAisles.php中给出的布尔值

警告:mysql_free_result()要求参数1为资源,布线在第70行的/home2/ctshaw96/public_html/scripts/getAisles.php中给出 I = 3&#39;项目[3]&#39;是SELECT Aisle FROM Items WHERE Store_ID = 2 AND Name = 警告:mysql_fetch_assoc()期望参数1是资源,第66行/home2/ctshaw96/public_html/scripts/getAisles.php中给出的布尔值

警告:mysql_free_result()要求参数1为资源,布线在第70行的/home2/ctshaw96/public_html/scripts/getAisles.php中给出 i = 4的&#39;项[4]&#39;是SELECT Aisle FROM Items WHERE Store_ID = 2 AND Name = 警告:mysql_fetch_assoc()期望参数1是资源,第66行/home2/ctshaw96/public_html/scripts/getAisles.php中给出的布尔值

警告:mysql_free_result()要求参数1为资源,布线在第70行的/home2/ctshaw96/public_html/scripts/getAisles.php中给出 &#34;找不到物品&#34;&#34;物品未找到&#34;&#34;物品未找到&#34;&#34;物品未找到&#34;&#34;物品未找到&#34;

这是网址http://shaw-dev.com/scripts/getAisles.php?userid=1&listname=test

3 个答案:

答案 0 :(得分:1)

这个SQL:

SELECT Aisle FROM `Items` WHERE `Store_ID` = $storeid AND `Name`= {$items[$i]}

将构建不正确的SQL,例如

SELECT Aisle FROM `Items` WHERE `Store_ID` = $storeid AND `Name`= foo

必须用单引号括起来。

但请注意,使用外部变量构建SQL语句会使您的代码容易受到SQL注入攻击。此外,任何带有单引号的输入数据,如&#34; O&#39; Malley&#34;将会破坏您的查询。了解参数化查询,最好使用PDO模块,以保护您的Web应用程序。 This question有许多详细的例子。另请参阅http://bobby-tables.com/php了解替代方案&amp;解释危险。 运行使用外部数据构建的SQL语句就像吃在家门口的食材制成的汤。

答案 1 :(得分:0)

如果出现错误,

mysql_query()将返回false。

如果返回false,则可以使用mysql_error()获取错误消息。

答案 2 :(得分:0)

用单引号

包裹item[$i]
$sql = "SELECT Aisle FROM `Items` WHERE `Store_ID` = $storeid AND `Name`= '{$items[$i]}'";