0

我需要一些帮助。我编写了一个脚本来将名字和姓氏放入数据库。这可以正常工作。然后我编写了一个脚本来显示这些名称以及每个名称的 4 个文本字段,学生点可以通过输入然后存储在数据库中。数据库中的名称显示正确,文本字段显示正确,但是,当我尝试将数字放入字段时,它不会将数字放入数据库并生成“未定义索引”错误。我已经为此工作了一段时间,但只是没有得到它。谢谢你的帮助。我的代码如下。谢谢你。

<html>
<body>
<form action="pts_summary.php" method="post">
<table border="1">
<tr>
<th>Student Name</th>
<th>First Hour</th>
<th>Second Hour</th>
<th>Third Hour</th>
<th>Fourth Hour</th>
</tr>
<br>

<?php

$hour1 = $_POST['hour1'];
$hour2 = $_POST['hour2'];
$hour3 = $_POST['hour3'];
$hour4 = $_POST['hour4'];


$con=mysqli_connect("localhost","root","","srrdb");                         
if (mysqli_connect_errno())                                                 
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * From students");                      


while($row = mysqli_fetch_array($result))                                   
{
    echo "<tr>"."<td>".$row['fname']."&nbsp".$row['lname']."</td>".     
    "<td>".'<input type="text" name="hour1">'."</td>".                  
    "<td>".'<input type="text" name="hour2">'."</td>".                  
    "<td>".'<input type="text" name="hour3">'."</td>".                  
    "<td>".'<input type="text" name="hour4">'."</td>"."</tr>";          
}

if (isset ($_POST['submit']))
{
$sql="INSERT INTO students (hour1, hour2, hour3, hour4) 
VALUES ('".$hour1."','".$hour2."','".$hour3."','".$hour4."')";
}   

mysqli_close($con);                                                         

?>                                                                          

</table>
<br><input type="submit" value="SUBMIT" name="submit">
</form>
</body>
</html>
4

2 回答 2

0

您甚至在检查是否按下提交按钮之前就试图获取发布数据。如果未按下提交按钮,您将不会在任何 $_POST['hour#'] 字段中有值,这将引发未定义的索引错误。像这样在提交检查之后抛出这些行。

if (isset ($_POST['submit']))
{
    $hour1 = $_POST['hour1'];
    $hour2 = $_POST['hour2'];
    $hour3 = $_POST['hour3'];
    $hour4 = $_POST['hour4'];

    $sql="INSERT INTO students (hour1, hour2, hour3, hour4) 
    VALUES ('".$hour1."','".$hour2."','".$hour3."','".$hour4."')";
}   
于 2013-06-14T18:14:20.123 回答
0

您未定义的索引通知是由使用$_POST[...]而不检查它们是否已设置引起的。您的数据没有插入到您的数据库中,因为您只是在设置INSERT查询 -

$sql="INSERT INTO students...  

但你从不执行查询。

mysqli_query($con,$sql);

尝试 -

if (isset ($_POST['submit'])){
    // put these inside isset() to prevent undefined index notices
    $hour1 = $_POST['hour1'];
    $hour2 = $_POST['hour2'];
    $hour3 = $_POST['hour3'];
    $hour4 = $_POST['hour4'];

    $sql="INSERT INTO students (hour1, hour2, hour3, hour4) 
    VALUES ('".$hour1."','".$hour2."','".$hour3."','".$hour4."')";
    //missing the query line
    // Insert or die with error message
    $update = mysqli_query($con,$sql) or die(mysqli_error($con));
}   

此外,您使用的是未经$_POST处理的数据,因此您对 SQL 注入持开放态度。mysqli_real_escape_string()使用或更好地使用准备好的语句 进行消毒- http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

于 2013-06-14T18:31:29.280 回答