PHP MySQL插入查询使用$ _POST变量不起作用

时间:2014-11-21 23:18:43

标签: php mysqli insert

我正在尝试将变量插入到我的数据库中的表中,并且由于某种原因,INSERT查询未将我的值插入到所述数据库中。我已经测试了“test_input”函数,它工作得很好,我知道连接正在工作,因为我稍后在代码中的SELECT查询正在工作。我也知道输入在$ _POST超全局中,所以我认为它可能与插入查询有关,排除了其他可能性。查询有什么问题吗?这是我的PHP代码:

            function test_input($data) {
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);
            return $data;
        }

        $name = test_input($_POST['name']);
        $date = test_input($_POST['date']);
        $datestring = date('Y-m-d',strtotime(test_input($_POST['date'])));
        $venue = test_input($_POST['venue']);
        $town = test_input($_POST['town']);

        $connection = new mysqli("Example","Example","Example","Example");
        if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }   

        if($_POST != []) {
            $connection->query("INSERT INTO events (Name, Date, Venue, Town) VALUES(" . $name . ", " . $datestring . ", " . $venue . ", " . $town . ")");
        }

如果出现任何问题,这是我的HTML表单代码。

    <div class="tr" id="addevent">      

        <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

        <div class="td">
        <input type="text" name="name">
        </div>

        <div class="td">
        <input type="text" name="date">
        </div>      

        <div class="td">
        <input type="text" name="venue">
        </div>          

        <div class="td">
        <input type="text" name="town">
        </div>  

        <div class="td">
        <input type="submit" value="Add Event">
        </div>

        </form>

    </div>

1 个答案:

答案 0 :(得分:1)

它不起作用,因为您创建的动态SQL插入语句将在VALUES列表中包含不带引号的字符串,因此格式不正确。话虽如此,你真的不应该这样做,因为它容易受到一种名为SQL injection的非常常见的攻击。<​​/ p>