So I have a $items= array(13, 19, 22, 3129);
How can I simply not include the rows with these id's in my DELETE query sql?
DELETE FROM table1
WHERE id NOT IN (13, 19, 22, 3129)
PHP では、implode()関数を使用して IN 句を作成できます。
$items = implode(",", $items);
$sql = "DELETE FROM table1 WHERE id NOT IN ({$items})";
implodeを使用しますが、プログラムの後半で使用する可能性があるのと同じ配列変数を設定しないでください。また、そのように変数のデータ型を変更することは推奨されないか、適切なプログラミング手法とは見なされません。
$items= array(13, 19, 22, 3129);
$sql = sprintf("delete from tbl where id_col not in (%s)",implode(",", $items));
mytable
が大きいが、保持するエントリの数が少ない場合は、こちらがより高速な方法です
$items= array(13, 19, 22, 3129);
$sql = "CREATE TABLE mynewtable LIKE mytable";
mysql_query($sql);
$id_list = sprintf("(%s)",implode(",", $items));
$sql = "INSERT INTO mynewtable SELECT * FROM mytable WHERE id_col IN " . $id_list;
mysql_query($sql);
$sql = "DROP TABLE mytable";
mysql_query($sql);
$sql = "ALTER TABLE mynewtable RENAME mytable";
mysql_query($sql);