php - mySQL查询语法错误?

标签 php mysql

我的 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/

相关文章:

php - 拉拉维尔 5.5 : Get all registered routes in Service provider

PHP、MySQL 和关联数组问题...?

php - 随机页面生成不包括 php 中已生成的选项

mysql - 如何在列中创建具有相同值的 1000 行?

PHP:如何创建具有事件记录的表?

javascript - 在 Woocommerce 的 Adword 转换代码中添加订单数据

PHP别名@函数

mysql - 当打开的连接过多时如何使 mysqlconnection 等待

mysql - 按列对 MySQL 结果进行排序,其中多个值之间用句点分隔

php - Laravel - 定义多表关系