2017-02-17 82 views
-2

我正在開展一個項目,但我被卡住了。我正在製作一個系統,以便從網站上的FAQ頁面更改答案和問題。爲此我在SQL中使用2個表。一個包含答案的人,一個包含問題的問題,其中包含一個與答案相關的ID號的列。我不能一次運行這兩個SQL,有人可以幫我解決這個問題。我需要首先更新我的答案表,從新答案中獲取ID以將其連接到問題表。帶有來自第一個ID的多個查詢

在此先感謝。

表答案 enter image description here

表問題 enter image description here

代碼更新

<?php 
include('../inc/connection.php'); 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 

if (isset($_POST['fields'])) { 
    foreach ($_POST['fields'] as $item) { 
     $values[] = $db->real_escape_string($item); 
    } 

    var_dump($values); 

    if ($stmt = $db->prepare("INSERT INTO AntwoordenFAQ (nl_antwoord,fr_antwoord,en_antwoord) VALUES (?,?,?);")) { 

     $stmt->bind_param('sss', $values[0], $values[1], $values[2]); 
     if ($stmt->execute()) { 
      if ($stmt->affected_rows == 1) { 
       $IDinsert = $db->insert_id; 
       if ($stmt = $db->prepare("INSERT INTO VragenFAQ (nl_vraag, fr_vraag, en_vraag) VALUES (?,?,?);")) { 
        $stmt->bind_param('sss', $values[3], $values[4], $values[5]); 
        if ($stmt->execute()) { 
         if ($stmt->affected_rows == 1) { 
          echo TRUE; 
         } 
         else { 
          echo $IDinsert; 
         } 
        } 
        $stmt->close(); 
       } 
      } 
      else { 
       echo FALSE; 
      } 
     } 
     $stmt->close(); 
    } 
    $db->close(); 
} 
} 
exit(); 
?> 
+0

檢查mysqli_errors。你假設一切正常。 – aynber

+0

有什麼問題?什麼'但我不能一次運行這兩個SQL'的意思是?向我們展示樣本數據和預期產出。 \t請閱讀[**如何提問**](http://stackoverflow.com/help/how-to-ask) \t \t這裏是一個偉大的地方[** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)來了解如何提高您的問題質量並獲得更好的答案。 –

+0

'幫助我解決問題'在這裏閱讀更多http://stackoverflow.com/questions/175066/sql-server-is-it-possible-to-insert-into-two-tables-at-the-same-time #175138 – JustOnUnderMillions

回答

0

說你不能一次做兩個陳述似乎很明顯,但實際上並非如此。 SQL確實給出了一種邏輯上同時執行兩個語句的方法。這意味着對數據庫的任何其他查詢都不會看到任何內容或兩個查詢的結果。你用一個事務來做到這一點。它的工作原理是這樣的:

BEGIN TRANSACTION; 

-- On systems you might need to lock tables here on others it 
-- happens automatically 

-- QUERY 1 
INSERT -- ... 
; 

-- QUERY 2 
INSERT -- ... 
; 

COMMIT TRANSACTION; 

這是怎麼了(作爲一個例子),銀行可能會從一個賬戶移到現金到另一個 - 從未有一個時刻,兩個賬戶有現金或無賬戶有現金。在銀行示例中,兩個(或更多)查詢將是UPDATE查詢。