2

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?

4

3 に答える 3

5
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})";
于 2012-05-22T17:47:48.467 に答える
1

implodeを使用しますが、プログラムの後半で使用する可能性があるのと同じ配列変数を設定しないでください。また、そのように変数のデータ型を変更することは推奨されないか、適切なプログラミング手法とは見なされません。

$items= array(13, 19, 22, 3129);
$sql = sprintf("delete from tbl where id_col not in (%s)",implode(",", $items));
于 2012-05-22T18:01:23.873 に答える
1

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);
于 2012-05-22T18:21:51.833 に答える