2010-03-26 131 views
1

我想這兩個查詢合併爲一個:如何將兩個mysql查詢合併爲一個?

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

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

能不能做到?

+0

這是兩種不同的操作方法 - 爲什麼你想結合他們? – thetaiko 2010-03-26 16:01:47

+0

@ thetaiko這是一個將創建一個新的子類別項目的腳本。插入子類別時,我試圖將該子類別的ID插入到父類別的子字段中。 – Tom 2010-03-26 16:03:38

+0

所以'$ child'是從'INSERT'和'$ id == $ parent'自動生成的ID? – thetaiko 2010-03-26 16:06:06

回答

0

雖然我不知道這是否適合您的問題,實際上它是可以通過使用MySQLi擴展到多個查詢合併成一個,(它不會與mysql擴展工作)

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

這仍然運行兩個查詢 - 只是順序。 – thetaiko 2010-03-26 16:11:37

1

創建MySQL中的觸發器。

沒有做任何檢查,如果父類別存在,或捕捉異常下面應該做的伎倆。將'dbname'替換爲你的數據庫。

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 
// 

當觸發器是否工作正常,更新將一個INSERT因此,所有你需要做的就是運行後都會自動調用:

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