2010-03-26 4 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

+0

@ thetaiko это для скрипта, который создаст новый элемент категории подкатегории. Когда вставлена ​​подкатегория, я пытаюсь установить идентификатор этой подкатегории в родительское поле родительской категории. – Tom

+0

так что '$ child' - это автоматически сгенерированный идентификатор из' INSERT' и '$ id == $ parent'? – thetaiko

ответ

0

Хотя я не знаю, если это соответствует вашей проблеме, на самом деле можно объединить несколько запросов в один, используя расширение MySQLi (он не будет работать с расширением туздо)

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

Это все еще выполняется два запроса - только последовательно. – thetaiko

1

Создать триггер в MySQL.

Без какой-либо проверки, если существует родительская категория или исключение для исключения, следующее должно сделать трюк. Замените 'dbname' тем, что есть у вашего db.

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')"); 
Смежные вопросы