2012-03-09 3 views
0

У меня есть массив, который захватывает данные флажка и помещает определенную информацию в базу данных, если данные флажка не являются копией чего-то уже в базе данных. Я хотел бы знать, как я могу создать код, который сканирует базу данных и находит данные, которые не были частью моих данных флажка, и удалять их из базы данных.Удаление записей базы данных Не в массиве

Хорошо, например, допустим, что у меня есть значения 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); 
    } 
} 

ответ

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) . ")"; 
Смежные вопросы