MySQL クエリをループしてはならない理由を理解しており、それを回避しようとしています。$names
に挿入するキーワードのリストを含む配列があり、MySQL フィールドに制約がありsomeTable
ます。UNIQUE
name
mysql> select * from someTable where name='stress';
+-----+--------+
| id | name |
+-----+--------+
| 143 | stress |
+-----+--------+
1 row in set (0.00 sec)
mysql> insert into someTable (name) values ('stress');
ERROR 1062 (23000): Duplicate entry 'stress' for key 'name'
mysql>
ループを避けるために、次のタイプのクエリをお勧めします。
$result = mysql_query("insert into someTable (name) values ('firstName'), ('secondName'), ('thirdName')");
ただし、いずれかの名前が既に存在する場合、値は挿入されません。さらに、 の値は$result
になりますFALSE
。値を挿入するための単一のクエリを作成するにはどうすればよいですか?それらのいずれかが存在しても失敗せず、それらのTRUE
いずれかが挿入された場合に返されますか?
このためのストアド プロシージャを記述できることはわかっていますが、それではループが PHP から MySQL に移動するだけです。何も節約していないように見える帯域幅(これはローカルホスト上にあるため重要ではありません)以外。