0

我有一个包含用户信息的数据库表:姓名、电子邮件和他们承诺捐赠的项目。我想在网页上显示他们拥有的项目,所以我构建了这个查询:

$email  = (isset($_POST['email'])) ? $_POST['email'] : '';

$i = "SELECT required_items.name
      FROM required_items LEFT JOIN donations ON donations.item_id=required_items.id 
      WHERE donations.email = '" .$email. "' ";

$ir = $db->query($i);
$rows = $ir->fetchAll();

foreach($rows as $data){
$item_name = $data['name'];
}

然后当我显示信息时:

<tr>
   <td><label>Item</label></td>
   <td><input type="text" name="name" value="<?php echo $item_name; ?>"></td>
</tr>

当我运行查询并替换“.$email”时。使用电子邮件地址,查询可以正常工作,我可以在 phpmyadmin 中看到他们的捐赠,但到目前为止,在代码中使用这个变量时,我只得到了一些只是说 Array.

如何显示正确的信息?我最终希望它通过电子邮件发送给用户,所以这将非常有帮助。

编辑:我已经应用了 STLMikey 给出的建议,现在 $item_name 显示“NULL”。

4

1 回答 1

1

您的代码很容易受到 SQL 注入攻击。您需要重新评估该 SQL。( http://en.wikipedia.org/wiki/SQL_injection )

不过,要实际回答您的问题,您的变量命名$item_name是查询返回的所有行的集合。您需要遍历它以从每一行中提取所需的名称......如下所示:

$rows = $ir->fetchAll();
foreach($rows as $data){
    $item_name = $data['name'];
}

如果您无法弄清楚为什么某些内容会打印Array()到屏幕上,请尝试调用print_r($var)您的变量以查看其内容。这将打印数组的内容,以便您查看内部结构。

于 2013-10-15T02:32:50.510 回答