XAMPP MySQL数据库的PHP Insert语句不会导致表更新
我试图编写一个程序,从html表单中获取信息,并将其上传到本地主机上的MySQL数据库(使用XAMPP)。为此,我使用HTML创建了一个表单,该表单将接收要插入数据库的数据,如下所示:XAMPP MySQL数据库的PHP Insert语句不会导致表更新,php,mysql,mysqli,xampp,Php,Mysql,Mysqli,Xampp,我试图编写一个程序,从html表单中获取信息,并将其上传到本地主机上的MySQL数据库(使用XAMPP)。为此,我使用HTML创建了一个表单,该表单将接收要插入数据库的数据,如下所示: <!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="styles/main.css"> <meta charset="utf-8"&g
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="styles/main.css">
<meta charset="utf-8">
<title>Presentation Registration</title>
<script type="text/javascript">
function Submit()
{
// I put input validation stuff here, but left it out to simplify code for reading
document.getElementById("myForm").submit();
}
</script>
</head>
<body>
<form id="myForm" action="actionPage.php" method="post">
<TABLE>
<TR>
<TD><input type="radio" name="TimeSlot" class="TimeSlot" id="Slot1" value="Slot1">12/9/15, 6:00 PM – 7:00 PM</TD>
<TD>
<?php
$con = mysqli_connect('localhost','username','password', 'myDB');
$query = "SELECT * FROM reserve";
$result = mysqli_query($con, $query);
$row = mysqli_fetch_array($result);
echo $row["Open Seats"]." ";
?>
Seats Remaining</TD>
</TR>
<TR>
<TD><input type="radio" name="TimeSlot" class="TimeSlot" id="Slot2" value="Slot2">12/9/15, 7:00 PM – 8:00 PM</TD>
<TD><?php
$row = mysqli_fetch_array($result);
echo $row["Open Seats"]." ";
?>
Seats Remaining</TD>
</TR>
<TR>
<TD><input type="radio" name="TimeSlot" class="TimeSlot" id="Slot3" value="Slot3">12/9/15, 8:00 PM – 9:00 PM</TD>
<TD><?php
$row = mysqli_fetch_array($result);
echo $row["Open Seats"]." ";
?>
Seats Remaining</TD>
</TR>
<TR>
<TD><input type="radio" name="TimeSlot" class="TimeSlot" id="Slot4" value="Slot4">12/10/15, 6:00 PM – 7:00 PM</TD>
<TD><?php
$row = mysqli_fetch_array($result);
echo $row["Open Seats"]." ";
?>
Seats Remaining</TD>
</TR>
<TR>
<TD><input type="radio" name="TimeSlot" class="TimeSlot" id="Slot5" value="Slot5">12/10/15, 7:00 PM – 8:00 PM</TD>
<TD><?php
$row = mysqli_fetch_array($result);
echo $row["Open Seats"]." ";
?>
Seats Remaining</TD>
</TR>
<TR>
<TD><input type="radio" name="TimeSlot" class="TimeSlot" id="Slot6" value="Slot6">12/10/15, 8:00 PM – 9:00 PM</TD>
<TD><?php
$row = mysqli_fetch_array($result);
echo $row["Open Seats"]." ";
?>
Seats Remaining</TD>
</TR>
</TABLE>
<button type="button">Student List</button>
<TABLE>
<TR>
<TD>UMID </TD>
<TD><input type="text" class="inputText" id="UMID" name="UMID"></TD>
</TR>
<TR>
<TD>First Name </TD>
<TD><input type="text" class="inputText" id="fName" name="fName"></TD>
</TR>
<TR>
<TD>Last Name </TD>
<TD><input type="text" class="inputText" id="lName" name="lName"></TD>
</TR>
<TR>
<TD>Project Title </TD>
<TD><input type="text" class="inputText" id="projectTitle" name="projectTitle"></TD>
</TR>
<TR>
<TD>E-Mail </TD>
<TD><input type="text" class="inputText" id="email" name="email"></TD>
</TR>
<TR>
<TD>Phone Number </TD>
<TD><input type="text" class="inputText" id="phone" name="phone"></TD>
</TR>
</TABLE>
<button type="button" OnClick=Submit()>Submit</button>
</form>
</body>
</html>
演示文稿注册
函数提交()
{
//我把输入验证的东西放在这里,但为了简化阅读代码而省略了它
document.getElementById(“myForm”).submit();
}
2015年12月9日,下午6:00–7:00
剩余座位
2015年12月9日,下午7:00–8:00
剩余座位
2015年12月9日,晚上8:00–9:00
剩余座位
2015年10月12日,下午6:00–7:00
剩余座位
2015年10月12日,下午7:00–8:00
剩余座位
2015年10月12日,晚上8:00–9:00
剩余座位
学生名单
UMID
名字
姓氏
项目名称
电子邮件
电话号码
提交
如代码所示,我在submit函数上使用了一个action标记来触发“actionPage.php”运行。该程序内部的代码如下所示:
<?php
$con = mysqli_connect('localhost','username','password', 'myDB');
$umid = $_POST['UMID'];
$fName = $_POST['fName'];
$lName = $_POST['lName'];
$projTitle = $_POST['projectTitle'];
$eMail = $_POST['email'];
$phone = $_POST['phone'];
$slotID = "1";
$query = "INSERT INTO student (UMID, fName, lName, projTitle, e-Mail, phone#, SlotID) VALUES ($umid, $fName, $lName, $projTitle, $eMail, $phone, $slotID)";
$result = mysqli_query($con, $query);
echo "Database Insertion Complete";
?>
所有这些都连接到一个带有两个表(student和reserve)的数据库。当我运行代码并输入信息时,actionPage.php会触发并运行所有代码,包括最后的echo语句。但是,当我查看XAMPP时,学生表没有更新。我的代码有什么问题吗?还是应该查找其他问题?
$\u POST
是一个数组。因此,如果您想访问“UMID”,例如,它应该是$\u POST['UMID']
。您可以使用大括号,大括号仅用于方法/函数。有几个问题:
1) $umid=“$\u POST(umid)”;
应该是$umid=“$\u POST[“umid”];
我相信。其他类似的行也是如此
2)
必须是
,对于其他字段也是如此。表单元素如果没有“name”属性,则不会提交到服务器
3) 您编写查询的方式不正确。首先,通常需要将字符串(varchar)字段的输入值放在单引号中
有几个次要问题:
a) 我注意到你的JS中有一些验证代码,为了简洁起见,你省略了这些代码。这很好,但是任何和所有的验证代码也必须在服务器端重复。任何对浏览器了解最少的人都可以关闭Javascript,提交表单,并立即绕过所有验证。如果你想确保你的data是有效的,首先在PHP中实现验证。验证是JS对于用户体验很好,但永远不应该是检查数据的唯一方法
b) 您应该了解准备好的语句和参数化查询,以保护您的数据库免受SQL注入攻击。目前,您的数据库很容易受到攻击者的攻击。有关如何安全编写查询的说明和示例,请参阅。此外,如果您使用参数化查询,请参阅第3项中描述的问题上面的内容会自动消失,因为您不再需要担心这种语法-参数化过程会为您处理。将
echo
更改为if($result)echo“Database Insertion Complete”;
并告诉我们发生了什么$umid=“$\u POST(umid)”;
应该是$umid=“$\u POST[“umid”]
我相信。其他类似行也是如此。接下来,您应该了解预处理语句和参数化查询,以保护您的数据库免受SQL注入攻击。有关如何安全编写查询的说明和示例,请参阅。
需要是
,其他字段也需要是
s、 表单元素如果没有“名称”,则不会提交到服务器属性。我建议您可能会找到一个基本的HTML/PHP表单教程并密切关注它,因为这些都是相当基本的错误。最后,我注意到您的JS中有一些验证代码,为了简洁起见,您省略了这些代码。这很好,但任何和所有验证代码也必须在服务器端重复。任何对eir浏览器可以简单地关闭Javascript,提交表单,并立即绕过所有验证。如果要确保数据有效,请先在PHP中实现验证。验证是JS对于用户体验很好,但应该是第二个问题。检查$result是否返回false
。如果是,请查看tmysqli_error()的输出看看有什么问题。还要确保PHP错误报告已打开,并且没有其他原因导致崩溃。在这次更改之后,我的代码仍然无法运行,但这肯定是朝着正确方向迈出的一步。您是否确保与数据库建立了连接?您是否确保您的wuery没有抛出任何错误?使用mysql例如,我犯了什么错误?