【发布时间】:2013-12-21 16:42:36
【问题描述】:
我遇到了这样一种情况,将 mysql_query() 结果输入 mysql_fetch_array() 函数被解释为布尔值而不是结果。
下面的代码使用Using an SQL result in a foreach loop 作为代码示例来执行foreach 循环。代码可能仍然存在多个问题,因为我当前的问题发生在 foreach 循环之前。
$results=mysql_query("SELECT * FROM order_details WHERE orderid = $orderid");
print "SELECT * FROM order_details WHERE orderid = $orderid";
$productid;
$quantity;
$price;
$resultset = array();
while ($row = mysql_fetch_arraY($results)) {
$resultset[] = $row;
}
foreach ($resultset as $result)
{
$productid = $result['productid'];
$quantity = $result['quantity'];
$price = $result['price'];
print "<br />$productid, $quantity, $price";
};
【问题讨论】:
-
它不是“解释为布尔值”——它只是 is 布尔值
false,因为您的查询有错误。使用mysql_error()找出它是什么。 -
通过使用外部变量构建 SQL 语句,您很容易受到 SQL 注入攻击。 此外,任何带有单引号的输入数据,例如 " O'Malley”,会炸毁你的 SQL 查询。请了解如何使用参数化查询(最好使用 PDO 模块)来保护您的 Web 应用程序。 bobby-tables.com/php 有一些示例可以帮助您入门,this question 有很多详细示例。
-
谢谢,我知道这并不完美。但这只是 PHP 类的一些快速代码。我肯定会在现实世界的环境中清理我的琴弦。 :)