21. 5. 2007 v 19.01
Vícenásobný INSERT v MySQL
Pokud potřebujeme do databáze vložit více řádků, většinou se to dělá tak, že se postupně pokládají dotazy pro vložení jednotlivých řádků. Tedy v PHP nějak takto:
foreach($tags as $tag) {
$db->query('INSERT INTO [tags] (name,title) VALUES("'.$tag->name.'", "'.$tag->title.'")');
}
Tento způsob je ale celkem neefektivní, v MySQL ovšem můžeme použít následující syntaxi, která nám umožňuje vložit více řádků v jenom dotazu:
$db->query('INSERT INTO [tags] (name,title) VALUES ("accik", "Accík"), ("accing", "Accing")');
Problém ovšem může nastat v tom případě, pokud bude sloupec
name unikátní a zkusíme do něj vložit již existující
hodnotu. V tom případě se totiž vkládání neprovede. Řešení je ovšem
jednoduché, stačí použít klíčové slovo INGNORE.
Pokud je tento článek „nošením dříví do lesa“, tak se vám omlouvám. Jenže na českém webu jsem o tom nenalezl žádnou zmínku a třeba se to někdy někomu bude hodit.