0

我正在为我的公司制作一个联系表格,我制作了这个包含 20 多个字段的大型详细表格供用户填写。单击提交后,php 页面会向销售代表发送一封电子邮件,其中包含订单的详细报告。下一步是将信息输入数据库。我为它编写了代码,但它不起作用,所以我创建了一个辅助表供我用于测试目的,直到我准备好将它用于公司。在这个小型测试数据库中,有 3 个字段,orderID、companyName 和 contactName。当我指定一个 orderID 并且只有一个 orderID 时,它会使用下面的代码存储在数据库中,没问题。

$mysqli = new mysqli ("host", "username", "pass", "dbname");
    if($mysqli->connect_errno)
    {
        echo "Failed to connect: " . $mysqli->connect_error;
    }
    $mysqli->query("insert into testTable (orderID) values (5000)");

但是如果我在下面使用这段代码,这次包括一个 companyName 值,什么都不会发生。我没有收到任何错误(我看到)并且 php 什么也没说。

$mysqli = new mysqli ("host", "username", "pass", "dbname");
    if($mysqli->connect_errno)
    {
        echo "Failed to connect: " . $mysqli->connect_error;
    }
    $mysqli->query("insert into testTable (orderID, companyName) values (5000, \'".$_POST['companyName']."\')");

感谢您提供任何和所有帮助,并提前感谢您。

4

1 回答 1

1

试试这个:

$mysqli = new mysqli ("host", "username", "pass", "dbname");
if($mysqli->connect_errno)
{
    echo "Failed to connect: " . $mysqli->connect_error;
}

$companyName = $mysqli->real_escape_string($_POST['companyName']);

$mysqli->query("insert into testTable (orderID, companyName) values (5000, '$companyName')");

我认为您正在转义单引号,这是没有必要的,我还清理了您的公司名称以帮助保护您免受 MySQL 注入。

最好还是使用准备好的查询,有关更多信息,请访问以下链接:

http://de1.php.net/manual/en/mysqli.real-escape-string.php

如何防止 PHP 中的 SQL 注入?

于 2013-06-21T22:24:58.963 回答