Php 传递数组并从MySQL表中删除

Php 传递数组并从MySQL表中删除,php,mysql,html,arrays,forms,Php,Mysql,Html,Arrays,Forms,我在mysql中有一个表,我正在通过以下代码在屏幕上打印它: include ('mysql_con.php'); mysql_select_db("jaz", $con); $res1 = mysql_query("SELECT * FROM hovno ORDER BY id DESC"); echo "<form action='delete_from_db.php' method='POST'>"; echo "<table border='1'>"; ech

我在mysql中有一个表,我正在通过以下代码在屏幕上打印它:

include ('mysql_con.php');
mysql_select_db("jaz", $con);

$res1 = mysql_query("SELECT * FROM hovno ORDER BY id DESC");

echo "<form action='delete_from_db.php' method='POST'>";
echo "<table border='1'>";
echo "<tr>";
echo "<td colspan='6'>" . "<input type='submit' value='Delete Article'>" . "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>" . "<b>" . "Delete" . "</b>" . "</td>";
echo "<td>" . "<b>" . "ID" . "</b>" . "</td>";
echo "<td>" . "<b>" . "Date" . "</b>" . "</td>";
echo "<td>" . "<b>" . "Title" . "</b>" . "</td>";
echo "<td>" . "<b>" . "Preview" . "</b>" . "</td>";
echo "<td>" . "<b>" . "Author" . "</b>" . "</td>";
echo "</tr>";
while($a=mysql_fetch_array($res1))  {
echo "<tr>";
echo "<td>" . "<input type='checkbox' name='checkbox[]' value='" . $a["id"] . "'>" . "</td>";
echo "<td>" . $a["id"] . "</td>";
echo "<td>" . $a["created"] . "</td>";
echo "<td>" . $a["title"] . "</td>";
echo "<td>" . $a["preview"] . "</td>";
echo "<td>" . $a["author"] . "</td>";
echo "</tr>";
                                }
echo "</table>";
echo "</form>";
include('mysql_con.php');
mysql_select_db(“jaz”,$con);
$res1=mysql_查询(“按id DESC从订单中选择*);
回声“;
回声“;
回声“;
“回声”。"" . "";
回声“;
回声“;
“回声”。"" . “删除”。"" . "";
“回声”。"" . “身份证”。"" . "";
“回声”。"" . “日期”。"" . "";
“回声”。"" . “标题”。"" . "";
“回声”。"" . “预览”。"" . "";
“回声”。"" . “作者”。"" . "";
回声“;
而($a=mysql\u fetch\u数组($res1)){
回声“;
回声“.”;
回显“$a[“id”]”;
回显“$a[”已创建“]”;
回显“$a[“title”]”;
回显“$a[“预览”]”;
回音“$a[“作者]”;
回声“;
}
回声“;
回声“;
所以我将id作为复选框值放入数组中。 在另一个php文件中,我不想使用数组中的这个id来删除带有这些id的记录。我不知道购买时使用什么代码我尝试了以下方法:

<?php

include ('mysql_con.php');
mysql_select_db("jaz", $con) or die(mysql_error());

        $del[]=$_POST["checkbox"];

        $res1 = mysql_query("SELECT * FROM hovno WHERE id='$del'") or die(mysql_error());

    while($a = mysql_fetch_array($res1)){
            $b = $a["id"];
            mysql_query("DELETE FROM hovno WHERE id ='$b'") or die(mysql_error());
    }

虽然我对PHP不太清楚,但如果您得到ID列表,并用逗号分隔,则可以使用SQL运算符“in”。大概是这样的:

$res1 = mysql_query("SELECT * FROM hovno WHERE id in (1,2,3)")
关于变量名的注释:
这是一个关于nepojmenujes,tak se诉tom uz nikdy nevyznas的玩笑;)

虽然我对PHP不太清楚,但如果您得到ID列表,并用逗号分隔,则可以使用SQL运算符“in”。大概是这样的:

$res1 = mysql_query("SELECT * FROM hovno WHERE id in (1,2,3)")
关于变量名的注释: 这是一个关于nepojmenujes,tak se诉tom uz nikdy nevyznas的玩笑;)




您必须在删除查询中提供where id='$value',这是一个资源匮乏的问题。。。如果将有100个id,那么您将运行100个sql查询?您必须在删除查询中提供where id='$value',这是资源匮乏。。。如果将有100个ID,那么您将运行100个sql查询?您也可以在删除查询中使用相同的语法。“DELETE FROM tbl WHERE id IN(1,2,3)”您也可以在DELETE查询中使用相同的语法。“从tbl中删除,其中id在(1,2,3)”此代码存在安全问题-易受SQL攻击injection@Ji当然可以。问题不在于如何编写完整的安全系统,而在于“我有一些代码,但它不能按我希望的方式工作,我如何修复它?”。我理解,但指出安全问题很重要,因为提问者是新手。如果提问者是新手,我是否应该指出糟糕的软件设计问题?我认为,我们不应该举出有这些问题的例子。只需再使用一个函数,例如“addslashes”或“escape”。此代码存在安全问题-易受SQL攻击injection@Ji当然可以。问题不在于如何编写完整的安全系统,而在于“我有一些代码,但它不能按我希望的方式工作,我如何修复它?”。我理解,但指出安全问题很重要,因为提问者是新手。如果提问者是新手,我是否应该指出糟糕的软件设计问题?我认为,我们不应该举出有这些问题的例子。只需再使用一个函数,例如“addslashes”或“escape”。
<?php
    $del = $_POST['checkbox'];
    $idsToDelete = implode($del, ', ');
    $res1 = mysql_query("SELECT * FROM hovno WHERE id in ($idsToDelete)");
?>