如何使用网站上的数据更新数据库中的行?

时间:2014-01-30 14:40:30

标签: php sql

我正在尝试从下拉列表中为每个学生分配一个公司,并在正确的学生下将其更新到数据库中。

基本上,这就是我的网站的样子。

___________________________________________________________________
| Student ID    | Admin No     | Student Name  | Company List     |
|   1           | 1234         | ABC           | <drop down list> |
|   2           | 2345         | BCD           | <drop down list> |
|   3           | 3456         | CDE           | <drop down list> |
|   4           | 4567         | DEF           | <drop down list> |

这是上表的代码。

<form name="IT" action="getIT_now.php" method="post">

    <table cellspacing="0">
            <tr>
            <th>Student ID</th>
            <th>Admin Number</th>
            <th>Student Name</th>
            <th>GPA</th>
            <th>Gender</th>
            <th>Company List</th>
            </tr>

<?php

    $con=mysqli_connect("....","....","....",".....");
    // Check connection
    if (mysqli_connect_errno())
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }

//create the query
$result = mysqli_query($con,"SELECT student_id, admin_no, name, GPA, gender FROM student_details WHERE jobscope1= 'Information Technology' ORDER BY `GPA` DESC; ");
$result2 = mysqli_query($con,"SELECT job_title FROM job_details WHERE jobscope='Information Technology' ORDER BY `job_title` ASC;");

        /*options sections start*/
            $options= '';
            while ($row2 = mysqli_fetch_assoc($result2))
            {
                $options .='<option value="'. $row2['job_title'] .'"> '. $row2['job_title'] .'</option>';
            }
            /*options sections end*/

            //return the array and loop through each row
            while($row = mysqli_fetch_assoc($result))
            {

            $studentid = $row['student_id'];
            $adminno = $row['admin_no'];
            $name = $row['name'];
            $gpa = $row['GPA'];
            $gender = $row['gender'];

                  echo "<tr>";
                  echo "<td>" . $studentid . "</td>";
                  echo "<td>" . $adminno . "</td>";
                  echo "<td>" . $name . "</td>";
                  echo "<td>" . $gpa . "</td>";
                  echo "<td>" . $gender . "</td>"; 
                  echo "<td><select name='ddl' onclick='if(this.value != '') { myform.submit(); }'>".$options."</select></td>";
              }
          echo "</tr>";
?>
</table>
<input type='submit' value='Submit Pick' />
</form> 

现在这个表单实际上会转到另一个页面,因为我已经包含了一个表单操作。 所以这个getIT_now.php页面中的代码是

<?
    $con=mysqli_connect("...","....","....","....");
        if (!$con)
        {
        die('Could not connect: ' . mysqli_errno());
        }


$ddlvalues = $_POST['ddl'];
$studentid = $_POST['student_id'];
$query = mysqli_query($con, "INSERT INTO student_details(company) VALUES('" . $ddlvalues . "');");
?>

但是,当我检查数据库时,只有下拉列表中的第一个选项会反映在新行中。我曾尝试使用UPDATE查询语句,但这是错误的。

这是UPDATE语句的查询。

UPDATE student_details SET company = '" . $ddlvalues . "' WHERE student_id = '" . $studentid . "';

我现在遇到的问题实际上是:

  • 如何使网站和数据库中的学生ID匹配,以便能够正确更新?
  • 为什么在使用INSERT查询时只反映下拉列表中的第一个选项?

我对PHP很陌生,所以我真的很挣扎。

1 个答案:

答案 0 :(得分:0)

您没有包含student_id的输入,即未设置$_POST['student_id'],您还必须在将用户输入传递给查询之前验证用户输入,您可以使用预准备语句,

尝试使用隐藏字段,例如

echo '<input type="hidden" name="student_id" value="'.$studentid.'"/>';
相关问题