2016-10-10 101 views
-1

我有一個測驗模塊,其中我有兩個表quiz_questionquiz_optionsquiz_question正在保存問題 和quiz_option保存特定問題的選項。MySQL查詢更新多個表

quiz_option的表格結構: id | question_id |文字| is_correct

表結構quiz_question id |標題| desctiption |

哪裏question_id是外鍵的quiz_question

我想編寫一個查詢更新quiz_question及其所有相應quiz_options id爲一個單一的查詢。

enter image description here

+0

你爲什麼要在單個查詢更新嗎?我不認爲這是可能的。如果你想確保更新是原子的,你可以使用事務。 – jussius

+0

你有試過什麼嗎? – apokryfos

回答

-1

嘗試,你可以使用外鍵連接兩個多表的外鍵的概念更新父表的主鍵到子表的外鍵見鏈接 http://www.hostingadvice.com/how-to/mysql-foreign-key-example/

UPDATE table1 a 
     INNER JOIN table2 b 
      ON a.ID = b.ID 
SET  a.value = b.value 
+1

@ArditMeti [文檔](http://dev.mysql.com/doc/refman/5.5/en/update.html)不同意 – apokryfos

+1

@ArditMeti http://stackoverflow.com/questions/4361774/mysql-update-多表與一個查詢 – mhmd

0

多表更新。

table quiz_question PK (question_id) 
table quiz_option FK (question_id) 
0

獲取問題的ID並逐個更新它們,因爲您無法使用單個查詢更新兩個表。

$ID_VALUE = mysqli_real_escape_string($conn, $_GET['id']); 
UPDATE quiz_option SET fields_name = 'value' WHERE question_id = $ID_VALUE; 
UPDATE quiz_question SET fields_name = 'value' WHERE id = $ID_VALUE; 
+1

[Little Bobby](http://bobby-tables.com/)說*** [你的腳本存在SQL注入攻擊的風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql -injection-in-php)***瞭解[MySQLi]的[prepared](http://en.wikipedia.org/wiki/Prepared_statement)語句http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! [不相信它?](http://stackoverflow.com/q/38297105/1011527)請不要教壞的編碼習慣。 –

+0

他/她對我來說似乎是一個初學者,所以幫助他/她很容易回答。 – VishalParkash

+0

發佈有潛在危險的代碼? –

0

下面是該查詢:

INSERT INTO quiz_question(title,description) VALUES ('test','test question'); 
INSERT INTO quiz_option(question_id,text,is_correct) VALUES (LAST_INSERT_ID(),'test','0'),(LAST_INSERT_ID(),'test2','0'),(LAST_INSERT_ID(),'test3','0'),(LAST_INSERT_ID(),'test4','1') 
+0

這是插入查詢我需要更新table.Anyways我認爲這是不可能的單個查詢。 –