2016-01-12 4 views
0

Я пытаюсь сохранить несколько запросов в базе данных на двух разных таблицах. Ниже приведен код, который я попробовал безрезультатно. firsttable.a - это то же самое, что и secondtable.id, con содержит информацию о соединении, и все сохраняет отлично с одним запросом. Что-то мне здесь не хватает?Сохранение нескольких запросов к базе данных sql

if(empty($id)){ 
$uuid = uniqid(); 
$query = "INSERT INTO firsttable (`id`, `a`, `b`, `uuid`) VALUES (NULL, '$a', '$b', '$uuid')"; 

$query2 = "INSERT INTO secondtable (`id`, `c`, `d`, `uuid`) VALUES (NULL, '$c', '$d', '$uuid')"; 
}else{ 
$query = "UPDATE `firsttable` SET `id` = '$id', `a` = '$a', `b` = '$b', `uuid` = '$uuid' WHERE `id` = $id"; 

$query2 = "Update INTO secondtable SET `id` = '$a', `c` = '$c', `d` = '$d', 

if(!mysqli_multi_query($this->_con, $query;$query2)){ 
        throw new Exception( mysqli_error($this->_con)); 

ответ

1

mysql_multi_query принимает два аргумента: соединение с базой данных и одну строку.

Вы должны объединить свои два запроса вместе в виде строки:

mysqli_multi_query($this->con, $query1 . ';' . $query2); 

или то, что вы, вероятно, пытается сделать:

mysqli_multi_query($this->con, "$query1;$query2"); 

Из php documentation о том, как получить результирующие наборы для последующие запросы:

Для извлечения набора результатов из первого запроса вы можете использовать mysqli_use_result() или mysqli_store_result(). Все последующие результаты запроса могут быть обработаны с использованием mysqli_more_results() и mysqli_next_result().

Первый пример показывает, как все это работает.

В вашем примере, однако, правильный синтаксис: UPDATE tablename ..., а не UPDATE INTO tablename ....

+0

w3schools ввернули меня, они сказали, что просто разделены точкой с запятой, а не конкатенацией с разделенной точкой с запятой. Теперь он не убивает страницу, но все равно не сохраняет ее в базе данных - есть ли способ вывести ошибку, объясняя, почему обновление второго запроса не работает? Кроме того, я никогда не хочу вставлять в таблицу 2, только обновлять существующие данные, могу ли я изменить INSERT для таблицы 2 на простое обновление и все еще работать? – Steven

+0

@Steven Обновленный ответ, который должен быть тем, что вам нужно. И если вы хотите только обновлять существующие данные и никогда не добавлять ничего нового, то да, изменение вашей вставки в действительный запрос на обновление все равно будет работать. – jbafford

+0

Спасибо большое! Предположим, мне нужно использовать документацию больше, а не сторонний веб-сайт; D – Steven

Смежные вопросы