Php 删除不在数组中的数据库项

Php 删除不在数组中的数据库项,php,mysql,sql-delete,Php,Mysql,Sql Delete,我有一个数组,如果复选框数据不是数据库中已有内容的副本,它会捕获复选框数据并将某些信息发布到数据库中。我想知道的是,如何创建一个代码来扫描数据库,找到不属于复选框数据的数据,并将其从数据库中删除 好的,比如说我的数据库中有值1,2,3,4,但在我的复选框中,我只返回1,2,4。我想要一个扫描我的数据库并从数据库中删除该值(在本例中为3)的代码 这是我目前的代码: foreach($_POST['publish'] as $index => $val){ $matches = mysql_q

我有一个数组,如果复选框数据不是数据库中已有内容的副本,它会捕获复选框数据并将某些信息发布到数据库中。我想知道的是,如何创建一个代码来扫描数据库,找到不属于复选框数据的数据,并将其从数据库中删除

好的,比如说我的数据库中有值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);   
    }
}

对于MySQL查询,您可以使用
NOT IN

DELETE FROM tablename
WHERE col1 NOT IN (1, 2, 4)

下面是我将用于转义输入的代码

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)."";
}

您应该像这样使用查询:

delete from table where id NOT in (3)
在php中,例如:

$query = "DELETE FROM `$blog_table` WHERE `postID` NOT IN (" . implode(',', $array) . ")";