我正在为我的公司制作联系表格,我制作了这个大型复杂的表格,有超过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']."\')");
感谢任何和所有帮助,并提前感谢您。
答案 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注入。
最好尽量使用准备好的查询,有关更多信息,请访问以下链接: