2016-12-16 6 views
1

私はデータベースから情報を取得し、PHPを使用して自動的にテーブルにインポートしてフォームを作成するスクリプトを作成しています。フォームでは、データベースに含まれているデータが何であれ、フィールドの名前を付けています。私はどのようにループしてすべての入力フィールドを追加するのか分からないので、データベースにフォームの値を挿入するクエリの値の部分に問題があります。どうすればいい?ループによるデータベースへの値の挿入

while ($aRow = mysql_fetch_assoc($aResult)) { 
     if ($aRow['correct'] == 1) { 
      $tableString .= "<input name=". $qRow['questionID'] ." 
           type='radio' 
          >" . 
           $aRow['answerValue'] . "<br />"; 
     } else { 

      $tableString .= "<input name=". $qRow['questionID'] ." 
           type='radio' 
          >" . 
           $aRow['answerValue'] . "<br />"; 
     } 
     $answer= [$aRow]; 
     $question= [$qRow]; 
     $student= [$username]; 

     // Insert data into mysql 
     //$sql="INSERT INTO $userexam(answerID, questionID, userID)VALUES('$answer', '$question', '$student')"; 
     //$result=mysql_query($sql); 

     $query = " INSERT INTO userexam ( 
           answerID, 
           questionID, 
           userID) 
          VALUES ('" . $_POST['/* answerID */'] . "', '" . 
             $_POST['/* questionID */'] . "', '" . 
             $_POST['/* userrole */'] . "')"; 
    } 
+3

mysql_ *関数の使用をやめてください。彼らは2年以上前倒しされており、PHP 7以降では動作しなくなります。あなたのコードは[SQLインジェクション](https://en.wikipedia.org/wiki/SQL_injection)に対して広く公開されています。これは基本的に、あなたのウェブサイトの訪問者があなたのデータベースで必要なことを何時でもやり遂げるのに1分もかからないことを意味します。それはそれを破壊することを含む。 [MySQLi](http://php.net/manual/en/book.mysqli.php)または[PDO](http://php.net/manual/en/book.pdo.php)を組み合わせて使用​​する[Prepared Statements](https://en.wikipedia.org/wiki/Prepared_statement)を参照してください。 – icecub

答えて

0

ラジオボタンの問題点:チェックされていないと、$ _POST経由で送信されません。ラジオボタンが存在するかどうかを知る必要があり、$ _POSTで送信されない人はチェックされません。

ループについて:

<form method="POST"> 
    <input type="radio" name="foo[23]"> 
    <input type="radio" name="foo[45]"> 
    <input type="submit" value="foo"> 
</form> 

は$ _POST変数を見て、あなたは、両方のラジオボタンがあることを参照してください。 あなたはあなたのIDに加えて、あなたのラジオボタンに「メイン」名前を付けることができますアレイ内でこの配列を使用して、チェックされたすべてのラジオボタンを反復処理できます。

そして、mysql_の代わりにPDOを使用してください。

関連する問題