Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么MySQL不接受这个值,或者为什么php不能正确地传输它?_Php_Mysql_Database - Fatal编程技术网

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

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

我正在为我的公司制作一份联系表单,我制作了一份包含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']."\')");
感谢您提供的一切帮助,并提前向您表示感谢。

请尝试以下方法:

$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注入的影响

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


如果您更改它,如下所示:$mysqli->query(“插入到testTable(orderID,companyName)值中(5000),”$\u POST['companyName'.“)”;在代码中添加一些错误报告,特别是在运行
$mysqli->query()
之后。很可能是SQL语法错误。您检查了所有日志了吗?有些事情可能会悄无声息地失败。你是要我这么做吗?我会继续做下去,但是我不应该逃避单引号吗?对不起,如果这是一个nooby问题,我昨天才开始学习mysql,但是我如何检查日志呢?或者添加错误报告?它说mysqli_real_escape_string()需要两个参数应该是$mysqli->real_escape_string它说解析错误:语法错误,在/home/content/33/9093333/html/geotest/process.php第125I行我编辑了两次,这行真的是“$mysqli->real_escape_string($\u POST['companyName'));”成功了!非常感谢你+1.