2016-12-16 52 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)。这基本上意味着你的网站的任何访问者只需要不到一分钟的时间就可以对数据库做任何他们想做的事情。这包括摧毁它。 Considder使用[MySQLi](http://php.net/manual/en/book.mysqli.php)或[PDO](http://php.net/manual/en/book.pdo.php)代替与[预备声明](https://en.wikipedia.org/wiki/Prepared_statement)。 – icecub

回答

0

单选按钮的问题是:如果它们未被选中,它们不会通过$ _POST发送。您需要“知道”存在哪些单选按钮,并且未使用$ _POST发送的用户不会被检查。

对于循环: 你可以给你的单选按钮“主”的名字,除了您的ID:

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

看看在$ _ POST变量,你看到两个单选按钮在一个数组中。您可以使用该数组遍历所有选中的单选按钮。

请开始使用PDO而不是mysql_ :)