以下是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
答案 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]}'";