2013-12-18 2 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

관련 문제