为什么MySQL不接受这个值,或者为什么php没有正确传输它?

时间:2013-06-21 22:17:42

标签: php mysql database

我正在为我的公司制作联系表格,我制作了这个大型复杂的表格,有超过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']."\')");

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

1 个答案:

答案 0 :(得分: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

How can I prevent SQL injection in PHP?