当前位置: 首页 > 知识库问答 >
问题:

PHP MySQL使用$\u POST变量插入查询不起作用

呼延哲
2023-03-14

我试图将变量插入数据库中的一个表中,由于某种原因,insert查询没有将我的值插入到所述数据库中。我已经测试了“test_input”函数,它工作得很好,我知道连接正在工作,因为我稍后在代码中使用的一个SELECT查询正在工作。我也知道输入是在$_PostSuperGlobal中,所以我认为这可能与insert查询有关,排除了其他可能性。这个查询有什么问题吗?以下是我的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个答案

蓬森
2023-03-14

它不起作用,因为您正在创建的动态SQL插入语句将在VALUES列表中包含未引用的字符串,因此格式错误。话虽如此,你真的不应该这样做,因为它容易受到一种叫做SQL注射的非常常见的攻击。

 类似资料:
  • 问题内容: 我想插入变量,并到我的桌前。现在,从我可以告诉我的所有信息中,我应该做的就是,下面是我所要做的,但是这根本不会在我的表中插入任何内容。如果我对应该写的内容进行硬编码(使用它将示例写到表中,那么到目前为止我的连接和语法正确)。任何帮助将不胜感激! 我也尝试过这个: 和: 问题答案: 您需要将SQL语句和参数作为单独的参数传递: 或使用可变参数语法(splat ) : 您的版本尝试传入包含

  • 第一个命令从最后一个git提交中删除第一个单词,第二个命令尝试对apiendpoint进行调用,将该变量作为调用的一部分,第三个命令只打印该变量,以确保其正常工作。请参见下面的代码 当我运行那个bash脚本时,我从服务得到一个响应,说XML中的“Item没有正确设置”,但是它确实正确地回显了正确的变量。所以我知道第一线起作用了。如果我复制curl命令并将其粘贴到bash中,用实际值替换$somet

  • 我有一个php脚本,从一个表中获取数据,然后尝试将获得的数据插入到第一个表的第二个表副本中: 插入查询工作正常,但有一种情况下会出现异常:其中一个字段包含失败查询的字符exp:INSERT INTO table2(id,Field1,Field2)值('12','Company','Kurt's Reifen-Shop')异常来自字符如何插入包含此字符的php变量。

  • 问题内容: 我正在尝试在媒体查询中使用CSS变量,但它不起作用。 问题答案: 从规格, 该函数可以代替元素上任何属性中值的任何部分。该函数不能用作属性名称,选择器或除属性值之外的其他任何东西。(这样做通常会产生无效的语法,否则将产生其含义与变量无关的值。) 所以不,您不能在媒体查询中使用它。 这是有道理的。因为您可以将例如设置为,即元素,然后从那里继承其他元素。但是媒体查询不是元素,它也不继承自,

  • 你能帮我解决这个问题吗?我想使用此方法在我的数据库中查找特定的缺口(它是由Apache Derby制作的)。我使用了EntityManager并从NetBeans中的数据库中映射持久性-实体类。 我得到这个错误: Java . lang . illegalargumentexception:在EntityManager中创建查询时出现异常:< br >异常描述:解析[SELECT * FROM U

  • 数据库: SQL查询 搜索 当我使用“Like”查询时,一切都正常,但是当我查找John时,它会显示John和Johnson的两个结果,因为它们是相似的。但当我搜索约翰时,它必须只显示约翰(而不是约翰逊)的结果。 到目前为止,我试过: 但它不起作用LogCat: 请给我一个提示。