2015-12-25 37 views
1

我有兩個表questionsanswers,並希望使用PHP將每個表的行復制到同一個表中。該表的結構如下:在MySQL中,如何複製使用PHP的同一表中的兩個表的行?

表:問題

enter image description here

表:回答

enter image description here

目前我使用下面的代碼,但它是不工作:

include "db.php";  
$exam_title=$_POST["title_id"]; 
$exam_id=$_POST["exam"]; 
$conn = new mysqli($servername, $username, $password, $dbname); 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "insert into questions(question, option_type, media_type, media_link, exam_id) 
    select question, option_type, media_type, media_link, '$exam_id' from questions where exam_id = ". $exam_id; 

$sql2 = "insert into answers(answer, ques_id, right_ans) 
    select a.answer, q.ques_id, a.right_ans from questions q, answers a where q.exam_id = ". $exam_id; 

if ($conn->query($sql) === TRUE) { 
    echo "done";  
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
}  
if ($conn->query($sql2) === TRUE) { 
    echo "done2";  
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
}  
$conn->close(); 

的問題是questionsques_idans_idanswersprimary keyauto increment其中answersquestionsques_idques_id有關係。

+0

什麼錯誤你會得到嗎? – Clay

+0

它正在返回done2(成功消息),但東西沒有被複制。 –

+0

也許autocommit被禁用。這就是爲什麼你應該在關閉連接之前提交。 –

回答

0

如果您只是將兩個表中具有1:1關係的記錄複製到一起,和「問題」顯然是主人,你有新的問題,都顯示了現有的答案(即兩個問題只顯示一個答案)和「搖晃」答案沒有任何問題。

從我的角度來看,有兩次,但只有一個答案的問題就是我所謂的「正常化」,但無論如何,如果要複製整個集合,你需要(僞代碼)

Get all fields for all questions and their related answers (simple join) 
for each row 
    insert new question row 
    get last insert id 
    insert answer, set answer.ques_id to last insert id of question 
+0

您能否提供實際的代碼? –

相關問題