MySQL查询中的错误是什么?

时间:2014-06-19 16:10:07

标签: php mysql

我是PHP& MySQL和我收到错误,我不明白我的查询中的错误是什么?基本上我允许用户填写此表单并提交。表单提交后应该进入MySQL数据库,在myphp上,Insertion的代码工作正常但在我的网站上却给我发错了。

这是我得到的错误:

  

错误:您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在' @ gmail.com)附近使用正确的语法,AF_Name = VALUES('一个人的名字'),V_City = VALU'在第7行

提交表单后,它移动到另一个PHP页面。我希望它留在表格存在的页面上。这个代码&表格在不同的PHP页面上。

这是我的代码:

<?php

    $con = mysql_connect(host, User_Name, Password, DB_Name);

if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("user", $con);

$sql="INSERT INTO request (RF_Name, RL_Name, R_Email, AF_Name, V_City, V_Country, Time, Date, Message)
    VALUES
    ('$_POST[RFname]', '$_POST[RLname]', '$_POST[sender]', '$_POST[AFname]', '$_POST[Vcity]', '$_POST[Vcountry]', '$_POST[time]', '$_POST[date]', '$_POST[body]')
ON DUPLICATE KEY UPDATE
     RF_Name = VALUES($_POST[RFname]),
     RL_Name = VALUES($_POST[RLname]),
     R_Email = VALUES($_POST[sender]),
     AF_Name = VALUES($_POST[AFname]),
     V_City = VALUES($_POST[Vcity]),
     V_Country = VALUES($_POST[Vcountry]),
     Time = VALUES($_POST[time]),
     Date = VALUES($_POST[date]),
     Message = VALUES($_POST[body])";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con)
?>

3 个答案:

答案 0 :(得分:0)

更新时将您的值括在引号中:

  RF_Name = VALUES('$_POST[RFname])',
     RL_Name = VALUES('$_POST[RLname]'),
     R_Email = VALUES('$_POST[sender]'),
     AF_Name = VALUES('$_POST[AFname]'),
     V_City = VALUES('$_POST[Vcity]'),
     V_Country = VALUES('$_POST[Vcountry]'),
     Time = VALUES('$_POST[time]'),
     Date = VALUES('$_POST[date]'),
     Message = VALUES('$_POST[body]')

答案 1 :(得分:0)

应该是

R_Email = VALUES(R_Email)

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

您需要建议的R_email列的值

正如其他人所说,你需要保护自己免受SQL注入,并考虑将mysql_ *函数升级到Mysqli或PDO

答案 2 :(得分:0)

您的问题是您没有清理查询参数。尝试将PDO或mysqli_ *与参数化查询一起使用。这将确保您的参数在查询中正确编码,并且不会弄乱语法。