如果复选框数据不是数据库中已存在的内容的副本,我有一个数据可以抓取复选框数据并将某些信息发布到数据库中。我想知道的是如何创建一个扫描数据库的代码,找到不属于我的复选框数据的数据并将其从数据库中删除。
好的,例如,假设我的数据库中有1,2,3,4的值,但在我的复选框中我只返回1,2,4。我想要一个扫描我的数据库的代码,并从数据库中删除该值(在本例中为3)。
这是我目前的代码:
foreach($_POST['publish'] as $index => $val){
$matches = mysql_query("SELECT * FROM `$blog_table` WHERE `postID` = '$val");
if (mysql_num_rows($matches) > 0)
{
// do nothing
} else {
$query3 = "insert into `$blog_table`
(`postID`)values
('$val')";
mysql_query($query3);
}
}
答案 0 :(得分:1)
这是我将使用转义输入的代码
if (!empty($_POST['publish']))
{
$inserts = array();
$deletes = array();
foreach ($_POST['publish'] as $val)
{
$deletes[] = intval($val);
$inserts[] = '('.intval($val).')';
}
$delete = "DELETE FROM `".$blog_table."` WHERE postID NOT IN (".implode(',',$deletes).");";
$insert = "INSERT INTO `".$blog_table."` (`postID`) VALUES ".implode(',',$inserts)."";
}
答案 1 :(得分:0)
对于MySQL查询,您可以使用NOT IN
:
DELETE FROM tablename
WHERE col1 NOT IN (1, 2, 4)
答案 2 :(得分:0)
你应该使用这样的查询:
delete from table where id NOT in (3)
在php中:
$query = "DELETE FROM `$blog_table` WHERE `postID` NOT IN (" . implode(',', $array) . ")";