-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>";
    }
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 でさえありません。適切なコメントを削除するためにコンマが表示されるようにするにはどうすればよいですか?

4

2 に答える 2

0

問題は、他の ID を結合して作成された ID ではなく、DELETEクエリにあります - と の*DELETEFROMキーワードがあってはなりません。542クエリの後に改行/スペース/コンマを付けずに、各 ID をループでエコーしているのでわかります。

クエリを実行する前に、クエリに連結されたデータが安全で期待どおりであることを確認する必要があります。数値 ID の場合intval()、数値入力のみを使用できます。

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

mysql_*また、関数は非推奨であることにも注意してください。mysqli_*またはを使用して新しいコードを開発してくださいPDO

于 2013-08-21T20:07:10.027 に答える