1

我在使用 SQL 查询时遇到问题,它不返回结果而不是表中的数据。我的数据库中有两张表,一张用于产品,另一张用于篮子。这个想法是从购物篮中获取产品 ID,并从产品表中检索所有其余数据。这就是我所做的:

$sql = sprintf("SELECT * FROM Basket");

$result = mysql_query($sql, $link);

while ($row = mysql_fetch_array($result)) {

$my_id = $row["Id"];

$prod_s=sprintf("SELECT * FROM Products WHERE Id='%s'",$my_id) ;
$prod= mysql_fetch_array($prod_s);

echo "<td>" . htmlentities($prod["Name"],ENT_QUOTES,"UTF-8") . "</td>";
echo "<td>" . htmlentities($prod["Size"]) . "</td>";

. . . 正在创建表,但所有字段均为空。

谢谢!

4

2 回答 2

1

首先,您当前的代码容易受到二级 SQL 注入的攻击:如果数据库中的一个 ID 是恶意字符串(例如 good old ; DROP DATABASE foo),那么您就完蛋了。

现在,您的实际问题是您实际上并未将第二个查询发送到 SQL 服务器。您将希望在其上运行mysql_query()并将结果句柄与mysql_fetch_array. 您已经在初始查询中正确执行了此操作。再做同样的事情。

最后,您可能想知道所有这些都可以使用连接在单个 SQL 查询中完成。您可能想向您最喜欢的搜索引擎询问这些。祝你好运!

于 2013-06-13T21:59:20.800 回答
1

我认为您仍然必须为 prod_s 添加一个 mysql_query。

    $my_id = $row["Id"];

    $prod_s=sprintf("SELECT * FROM Products WHERE Id='%s'",$my_id) ;
    $prod_q=mysql_query($prod_s);
    $prod= mysql_fetch_array($prod_q);

    echo "<td>" . htmlentities($prod["Name"],ENT_QUOTES,"UTF-8") . "</td>";
    echo "<td>" . htmlentities($prod["Size"]) . "</td>";
于 2013-06-13T22:00:01.520 回答