【问题标题】:Adding commas when echoing an array回显数组时添加逗号
【发布时间】:2013-08-21 19:47:50
【问题描述】:

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

<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,这甚至不是现有的ID。我怎样才能让它显示逗号以便删除正确的 cmets?

【问题讨论】:

  • 在您的帖子中发送正确的数据
  • 你为什么要调用$id = addslashes($info['id']); 来生成 HTML 输出?

标签: php arrays echo


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案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>
    

    【讨论】:

    • 转义失败!该脚本与原始脚本一样易受攻击。必须至少有一次致电mysql_real_escape_string()
    • 这不是我的代码(经过调整)。我正在使用提问者的代码。你的评论很粗鲁。
    • @Sven 如果唯一的输入是复选框,脚本如何易受攻击?没有可以输入查询的文本输入
    • 我还是添加了它。忽略像他这样无缘无故投反对票或质疑所有人的人。
    • @Mic1780 你被贬低不是因为any reasont,而是非常具体的——发布错误代码而没有任何解释。现在,在您进行编辑之后,情况变得更糟,因此我给了额外的 -1。
    猜你喜欢
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 2020-06-08
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多