在回显数组时添加逗号

时间:2013-08-21 19:47:51

标签: php arrays echo

我昨天制作了一个shoutbox,现在我正在尝试制作一个页面,网站管理员可以删除某些帖子。这是我目前的代码:

<form method="post">
<?PHP
include("config.php");
$data = mysql_query("SELECT * FROM shoutbox ORDER BY id DESC");
    while ($info = mysql_fetch_array($data)) {
        $id = addslashes($info['id']);
        echo "<input type=\"checkbox\" value=\"$id\" name=\"delete[]\"><b>" .$info['name']. ": </b>" .$info['shout']."<br>";
    }
if (isset($_POST['delete'])) {
foreach($_POST['delete'] as $item){

mysql_query("DELETE * FROM shoutbox WHERE id = ".$item." ");
        echo "$item";

    }
}

?>
<input type="submit" />
</form>

现在的问题是,在查询时它显示("id = ".$item.")它正确地拉出了所有id,但是它们之间没有逗号,所以说我选择了id的5,4和2它插入了542而且它甚至都没有现有的身份证。我怎么能这样做,所以它会删除正确的评论?

2 个答案:

答案 0 :(得分:0)

您的问题不是通过加入其他ID而创建的ID,而是使用DELETE查询 - *DELETE关键字之间不应有FROM。您可以看到542,因为您在循环中回显每个ID,在查询后没有任何新的行/空格/昏迷。

在执行任何查询之前,您应该确保连接到它的数据是安全的和预期的。对于数字ID,您可以使用intval()仅包含数字输入:

mysql_query("DELETE FROM shoutbox WHERE id = ". intval($item));

另请注意,mysql_*函数已弃用,请使用mysqli_*PDO开发新代码。

答案 1 :(得分:-2)

试试这个

<form method="post">
<?PHP
include("config.php");
$data = mysql_query("SELECT * FROM shoutbox ORDER BY id DESC");
while ($info = mysql_fetch_array($data)) {
    $id = addslashes($info['id']);
    echo "<input type=\"checkbox\" value=\"$id\" name=\"delete[]\"><b>" .$info['name']. ": </b>" .$info['shout']."<br>";
}//END WHILE LOOP
if (isset($_POST['delete'])) {
    $idList =   "'" . mysql_real_escape_string(implode("','", $_POST['delete'])) . "'";
    mysql_query("DELETE * FROM shoutbox WHERE id IN (" . $idList . ") ");
    echo $idList;
}//END IF

?>
<input type="submit" />
</form>