2013-12-18 4 views
0

У меня возникла проблема с вставкой нескольких данных в базу данных MYSQL. С приведенным ниже кодом я могу только вставлять данные, которые у меня есть. Допустим, есть 3 вопроса, и я должен представить 3 ввода, он только представил последний.Вставка нескольких данных в базу данных MYSQL

<?php 
include('questionDB.php'); 
if(isset($_POST['submit'])){ 
    $questionID = $_POST['id']; 
    $answer = mysql_real_escape_string(htmlspecialchars($_POST['answer'])); 
    $insert = mysql_query("INSERT INTO answers(survey_id, question_id, answer_body) VALUES ('1','" . $questionID . "', '" . $answer . "')"); 
    if ($insert){ 
     echo "Success"; 
    } else { 
     echo "Failed"; 
    } 
} 
$startTimeAuc = mysql_query("SELECT startTime FROM questions WHERE survey_id='1'"); 
$startTime = mysql_fetch_assoc($startTimeAuc); 
$startTime = ($startTime['startTime']); 
$endTimeAuc = mysql_query("SELECT endTime FROM questions WHERE survey_id='1'"); 
$endTime = mysql_fetch_assoc($endTimeAuc); 
$endTime = ($endTime['endTime']); 


$currentTimeAuc =(date("Y-m-d H:i:s")); 
if(($currentTimeAuc >= $startTime && $currentTimeAuc <= $endTime)){ 
?> 
<form name="auctionQuestion" method="post"> 
<?php 
    $auctionSurvey = "SELECT question_id, survey_id, question_body FROM questions 
         WHERE survey_id='1'"; 
    $aucResult = mysql_query($auctionSurvey) or die (mysql_error()); 
    while($auctionRow = mysql_fetch_assoc($aucResult)){ 
     echo "<p class=\"questions\">". $auctionRow['question_body']."</p>". "<input type=\"text\" name=\"answer\" class=\"answerField\"><BR>"; 
    ?> 
     <input type="hidden" name="id" value="<?php echo $auctionRow ['question_id'] ?>"> 
    <?php 
    } 
    ?> 
<input type="submit" class="submit" name="submit" value="Submit"> 
</form> 
</div> 
<?php 
} 
?> 

ответ

0

Несколько точек: 1. ваш код уязвим для SQL инъекций, использовать подготовленные данные или SQLI/PDO 2. Все ваши вопросы и ответы дают такое же имя, поэтому вы получите только один вставленный. Попробуйте дать им разные имена (используя -1/-2/-3 sufix и т. Д.), Или если я это сделаю, у меня было бы 3 вопроса и 3 ответа в одной записи в базе данных вместо 3-х вставок. 3. См. Ниже раздел. Вам нужно добавить переменные как для ответа, так и для id. В противном случае они получают одно и то же имя.

<input type=\"text\" name=\"answer\" class=\"answerField\"> 
<input type="hidden" name="id" value="<?php echo $auctionRow ['question_id'] ?>"> 
+0

Я не понимаю, что вы имели в виду для части 2. Причина. Я попытался изменить имена переменных, результат все тот же. – user3103739

+0

См. Мое редактирование. Я предполагаю, что ваша текущая структура db похожа на запись 1-survey_id/question_id/answer, запись 2-survey_id/question_id/answer ... я предложил поставить все 3 вопроса в одну запись как запись 1-survey_id/question_id_1/answer_1/question_id_2/answer_2 ... – Godinall

+0

Но я сделал, когда нажата кнопка отправки. $ questionID = $ _POST ['id']; $ answer = mysql_real_escape_string (htmlspecialchars ($ _ POST ['answer'])); – user3103739

Смежные вопросы