PHP将语句插入XAMPP MySQL数据库不会导致表更新[重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP将语句插入XAMPP MySQL数据库不会导致表更新[重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
我正在尝试编写一个程序,它将从html表单中获取信息,并将其上传到我本地主机上存在的mysql数据库(使用XAMPP)。为此,我使用HTML创建了一个表单,该表单将接收要插入数据库的数据,如下所示:
<!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>
如代码所示,我在提交函数上使用动作标记来触发“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时,学生表不会更新。我的代码有问题,还是我应该寻找其他问题?
$_POST
是一个阵列。因此,如果你想访问“UMID”,例如它应该是$_POST['UMID']
来访问它。您使用大括号,它仅用于方法/函数。
一些问题:
1)$umid = "$_POST(UMID)";
应该是$umid = "$_POST["UMID"];
我相信。和其他类似的线一样。
2)<input type="text" class="inputText" id="UMID">
需要是<input type="text" class="inputText" id="UMID" name="UMID">
,其他领域也是如此。如果表单元素没有“name”属性,则不会将其提交给服务器。
3)您编写查询的方式不正确。首先,通常需要将字符串(varchar)字段的输入值放在单引号中。
几个次要点:
a)我注意到你的JS中有一些验证码,为简洁起见省略了这些验证码。这很好,但是任何和所有验证代码也必须在服务器端重复。任何对浏览器知之甚少的人都可以简单地关闭Javascript,提交表单,并立即绕过所有验证。如果您想确保数据有效,请首先在PHP中实现验证。验证是JS对用户体验很好,但绝不应该是检查数据的唯一方法。
b)您应该了解准备好的语句和参数化查询,以保护您的数据库免受SQL注入攻击。目前,您的数据库很容易被攻击者攻陷。有关如何安全编写查询的说明和示例,请参阅http://bobby-tables.com。此外,如果您使用参数化查询,上面第3项中描述的问题类型会自动消失,因为您不再需要担心这种语法 - 参数化过程会为您处理。
以上是关于PHP将语句插入XAMPP MySQL数据库不会导致表更新[重复]的主要内容,如果未能解决你的问题,请参考以下文章
MySQL ON DUPLICATE KEY UPDATE 双插入 Xampp PHP7.0
Javascript 在 XAMPP 上的 PHP 中不起作用
使用JSP(Eclipse)将数据插入数据库(XAMPP,MySQL)