我的 WordPress 网站上有联系表格,该表格通过 ajax 发送并发送到我的邮箱。我还想将结果保存在数据库中,所以我编写了这个查询,但它给了我语法错误,但我在这段代码中找不到任何错误:
<?php
$con = mysql_connect("localhost","username","password");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("u31272B3", $con);
$sql="INSERT INTO wp_contactform (Nimi, Puhelin, E-mail, Viesti, IP, Day)
VALUES
('$_POST[Nimi]','$_POST[Puhelin]','$_POST[Sposti]','$_POST[Tiedot]','$_POST[Gotcha]','$_POST[Day]')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "1 record added";
mysql_close($con);
?>
发送邮件的 jquery 脚本可以工作,并且邮件已发送,但不会保存。
最佳答案
用反引号 (`) 引用列名称 E-mail。 MySQL 目前将其解释为两部分。
另请注意,(根据我的评论)您的代码对 SQL injection 完全开放攻击。最好使用正确参数化的 SQL 查询。
<小时/>SQL注入(inject)示例:
"INSERT INTO table (field) VALUE ('$_POST[var]')"
如果您发布值"'; DROP TABLE table; --"
,那么您就有一个有效的 SQL 字符串,该字符串会插入一个空字符串,然后尝试删除该表。替换您想要的任何有害声明。
关于php - mySQL查询语法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563144/