2016-01-12 121 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中,只更新現有數據,我是否可以將表2的INSERT更改爲只更新並使其仍然有效? – Steven

+0

@Steven更新了答案,這應該是你需要的。如果您只想更新現有數據,並且絕不添加任何新內容,則是的,將插入更改爲有效的更新查詢仍然可以工作。 – jbafford

+0

非常感謝!猜猜我需要更多地使用文檔,而不是第三方網站; D – Steven