2012-03-09 104 views
0

我有抓住复选框的数据和职位的某些信息到数据库中,如果该复选框数据不是的东西在数据库的副本已经是一个数组。我想知道的是,我怎么可以创建通过数据库进行扫描,发现这不是我复选框数据的一部分,并从数据库中删除数据的代码。删除数据库条目不在阵

好,例如,让我们说,我有我的数据库值1,2,3,4,但在我的复选框,我只拿回1,2,4。我想,它可以扫描我的数据库,并删除值(S)(在这种情况下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); 
    } 
} 

回答

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

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

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

你应该使用这样的查询:

delete from table where id NOT in (3) 

在PHP:

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