2012-12-15 51 views
0

我已经写了一些php代码以表格的形式从mysql数据库中检索一些记录。该表有三列,其中前两个从数据库填满,第三个列是每行的下拉列表。现在我想从填充行中选择下拉列表,并将每行的信息存储在新数据库中。将行数组存储到mysql数据库中

请查看密码并回复您的建议。

<html> 
    <? 
     // data from the "recordentry.php"; 
     $date = $_POST['date']; 
     $course = $_POST['course']; 
     $period = $_POST['period']; 
     $batch = $_POST['batch']; 
     $subject = $_POST['subject']; 
     $faculty = $_POST['faculty']; 
    ?> 
    <p> Current Date&Time:<? echo $date ?></p> 
    <form enctype="multipart/form-data" name="f1" method="POST" ACTION="<?=$self ?>""> 
    <? 
     $db = "contact"; 
     //mysql_connect(localhost,$_POST['username'],$_POST['pass']); 
     $link = mysql_connect("localhost", "root", ""); 
     if (!$link) 
      die("Couldn't connect to MySQL"); 
     mysql_select_db($db, $link) or die("Couldn't open $db: " . mysql_error()); 
     $result = mysql_query("SELECT name,uic FROM student where batch='$batch' AND course='$course' order by name") or die("SELECT ERROR: " . mysql_error()); 
     $num_rows = mysql_num_rows($result); 
     echo "<table border='1' align='center'><tr><th>Name</th><th>Unique Identification Code</th> 
    <th>Attendance</th></tr>"; 
     while ($row = mysql_fetch_array($result)) 
     { 
      //Display the results in different cells 
      echo "<tr><td align=center>" . $row['name'] . "</td><td align=center>" . $row['uic'] . "</td><td align=center><select name='attendance' style='background-color:#FFC'> 
    <option>Present 
    <option>Absent 
    </select></td></tr>"; 
      $data[] = array(
       'name' => $row['name'], 
       'uic' => $row['uic'], 
       'attendance' => $row['attendance'] 
      ); 
     } 
     echo "<tr><td><input type='submit' value='Submit' name='submit_button' />"; 
     echo "</table>"; 
     foreach ($data as $value) 
     { 
      $name = mysql_result($value['name']); 
      $uic = mysql_result($value['uic']); 
      $a_status = mysql_result($value['attendance']); 
      $db = "contact"; 
      $link = mysql_connect("localhost", "root", ""); 
      //$link = mysql_connect("localhost",$_POST['username'],$_POST['password']); 
      if (!$link) 
       die("Couldn't connect to MySQL"); 
      mysql_select_db($db, $link) or die("Select Error: " . mysql_error()); 
      $result = mysql_query("INSERT INTO attendance(date, course, period, batch, subject, faculty,name, uic, attendance) VALUES ('$date', '$course', '$period', '$batch', '$subject', '$faculty', '$name', '$uic', '$a_status')") or die("Insert Error: " . mysql_error()); 
      mysql_close($link); 
     } 
    ?> 
    </form> 
</html> 

上面的代码可以填充表中的所有从数据库中检索到的数据。但提交后它不能存储最后三个字段$ name,$ uic和$ attendance。所以,请帮助我。

+1

你为什么要做mysql_result($ value ['name']),etc?这只是一个字符串值,不是一个mysql结果集 – kennypu

+0

不使用'短标签' –

+0

**警告!**您的代码包含[SQL注入漏洞](http://en.wikipedia.org/wiki/SQL_injection) - 您将未经过滤的未经验证的用户输入($ _POST)直接传递给SQL字符串。请[切换到PDO](http://php.net/book.pdo)或[mysqli](http://php.net/book.mysqli),以便您可以使用[带有参数化查询的预准备语句](http: //en.wikipedia.org/wiki/Prepared_statement)。 – Charles

回答

0

试试这个:

$name = mysql_result($result, $value['name']); 
$uic = mysql_result($result, $value['uic']); 
$a_status = mysql_result($result, $value['attendance']); 

这将获得价值一次 - 但你重用$结果在查询(当您插入),所以它会被覆盖。更改第一个电话或第二个电话。

相关问题