2012-03-09 103 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) . ")"; 
相關問題