2016-03-14 74 views
0

我有三個字段插入數據

<textarea rows="2" name="answer[]" ></textarea> 
<select name="fraction[]">... 
<textarea rows="2" name="feedback[]"></textarea> 

用戶應該填補這個通過這個字段以至少四倍 然後我使用PHP循環字段超過一次將其插入數據庫

$answer = isset($_POST['answer']) ? $_POST['answer'] : "" ; 
$fraction = isset($_POST['fraction']) ? $_POST['fraction'] : "" ; 
$feedback = isset($_POST['feedback']) ? $_POST['feedback'] : "" ; 

foreach($answer as $key=>$value){ 
    $answer = $value; 
    $fraction = $fraction[$key]; 
    $feedback = $feedback[$key]; 
    $query = "insert into `question_answer` (answer, fraction, feedback) values ('$answer', '$fraction','$feedback')"; 
    $questions->insertData($query,$con); 
} 

記錄這個插入的數目,第一條記錄包含所有的值,因爲我想要的,但其他記錄只包含通過相關的陣列i循環的字段的值,另一個字段爲空..任何幫助?

+0

對不起,我不知道我理解這個問題。你能舉出一個不正確的行如何出現的例子。 – Ukuser32

+1

你的代碼容易受到[SQL注入](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – RiggsFolly

+0

你能稍微解釋一下你的意思嗎?你說_但其他記錄只包含與數組i相關的字段的值,其他字段爲空_ – RiggsFolly

回答

2

您覆蓋在第一循環的變量...藉此:

$answer = isset($_POST['answer']) ? $_POST['answer'] : "" ; 
$fraction = isset($_POST['fraction']) ? $_POST['fraction'] : "" ; 
$feedback = isset($_POST['feedback']) ? $_POST['feedback'] : "" ; 

foreach($answer as $key=>$value){ 
    $query = "insert into `question_answer` (answer, fraction, feedback) values ('$value', '$fraction[$key]','$feedback[$key]')"; 
    $questions->insertData($query,$con); 
} 
+0

當然,OP也應該預防SQL注入,並確保用戶輸入所有的數據,以便沒有反饋或沒有迴應的答案。 –

+0

非常感謝。它工作正常 – hany