XAMPP MySQL数据库的PHP Insert语句不会导致表更新

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

我试图编写一个程序,从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&nbsp</TD>
            <TD><input type="text" class="inputText" id="UMID" name="UMID"></TD>
        </TR>
        <TR>
            <TD>First Name&nbsp</TD> 
            <TD><input type="text" class="inputText" id="fName" name="fName"></TD>
        </TR>
        <TR>
            <TD>Last Name&nbsp</TD>
            <TD><input type="text" class="inputText" id="lName" name="lName"></TD>
        </TR>
        <TR>
            <TD>Project Title&nbsp</TD>
            <TD><input type="text" class="inputText" id="projectTitle" name="projectTitle"></TD>
        </TR>
        <TR>
            <TD>E-Mail&nbsp</TD>
            <TD><input type="text" class="inputText" id="email" name="email"></TD>  
        </TR>
        <TR>
            <TD>Phone Number&nbsp</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例如,我犯了什么错误?