SQL查询后,Html表返回空

时间:2013-06-13 21:38:18

标签: php sql

我遇到的SQL查询问题没有返回结果,而是返回表中的数据。 我的DB上有两个表,一个是Products,另一个是Basket。我们的想法是从产品中获取产品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>";

。 。 。 正在创建表,但所有字段都是空的。

谢谢!

2 个答案:

答案 0 :(得分:1)

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

现在,您的实际问题是您实际上并未将第二个查询发送到SQL Server。您需要在其上运行mysql_query()并将结果句柄与mysql_fetch_array一起使用。您已经使用初始查询正确执行了此操作。再做同样的事情。

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

答案 1 :(得分: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>";