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&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>

如代码所示,我在提交函数上使用动作标记来触发“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)

MySQL Prepared PDO 语句正在删除反斜杠

如何在我的笔记本电脑中设置xampp mysql?更具体地说,如何在我的数据库中插入数据?

为啥 php mysqli 不向 Xampp 中的数据库插入数据