Nasıl birine iki mysql sorguları birleştirebilirsiniz?

2 Cevap php

Ben birine bu iki sorguları birleştirmek istiyorum:

mysql_query("INSERT INTO categories (name, parent) VALUES ('$name', '$parent')");

mysql_query("UPDATE categories SET child='$child' WHERE ID = $id");

Bu yapılabilir mi?

2 Cevap

Bu sorununuzu uygun olmadığını ben bilmiyorum rağmen, aslında (o mysql uzantısı ile çalışmaz) MySQLi uzantısını kullanarak, içine birden sorguları birleştirmek mümkündür

mysqli_multi_query($connection, "INSERT INTO a (attrib1, attrib2) VALUES ('$a', '$b');UPDATE b SET attrib3='$c' WHERE attrib4 = $d");

MySQL bir tetikleyici oluşturmak.

Herhangi bir üst kategori varsa üzerinde kontrol veya alıcı istisnalar yapmadan aşağıdaki hile yapmak gerekir. Db ile ne olursa olsun 'dbname' değiştirin.

DROP TRIGGER IF EXISTS `dbname`.`update_parent`//
CREATE TRIGGER `dbname`.`categories` AFTER INSERT ON `dbname`.`categories`
FOR EACH ROW BEGIN
UPDATE categories SET child = NEW.ID WHERE ID = NEW.parent;
END
//

Tetik düzgün çalışıyorsa, güncelleme otomatik olarak bir INSERT böylece tüm yapmanız gereken çalıştırmak sonra çağrılan alacak:

mysql_query("INSERT INTO categories (name, parent) VALUES ('$name', '$parent')");