【问题标题】:Mysql Query Displays an error in SQL syntax when it's rightMysql Query 正确时显示 SQL 语法错误
【发布时间】:2014-01-03 07:53:36
【问题描述】:

我厌倦了这个错误。我很确定它适用于 '$_POST[name]' 但 sql 不接受它。

它给了我一个错误提示:你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 2 行的 ')' 附近使用正确的语法

$syn = mysql_real_escape_string($_POST['syn']);
$fore = mysql_real_escape_string($_POST['fore']);
 $localfore = mysql_real_escape_string($_POST['localfore']);
$save = mysql_query("INSERT INTO tblforecast (Issued,Valid,Synopsis,Forecast,Local_Forecast,Station11,Station12,Station13,Station14,Station15,Station16,Station17,Station18,Station19,Forecaster)
                           VALUES (now(),'24','$syn','$fore','$localfore','sample','$sample','sample','sample','sample','sample','sample','sample','sample',$id)");

发生了什么事?

PS。第 2 行点在 VALUES

的开头

【问题讨论】:

  • 你应该通过 isset() 检查每个 $_POST 数据
  • 哦,是的。 isset 正在工作。此代码在 isset 下 :)
  • 我试图将 VALUES 放在 $save 行中,错误移至第 1 行(而不是第 2 行),这就是我发现错误指向该短语的原因
  • 你有 $sample] 的值。格式不正确
  • 代替'$_POST[syn]'试试.$_POST['syn']

标签: php mysql sql syntax


【解决方案1】:

试试这个

$sql = "INSERT INTO tblforecast (Issued,Valid,Synopsis,Forecast,Local_Forecast,Station11,Station12,Station13,Station14,Station15,Station16,Station17,Station18,Station19,Forecaster)
                                   VALUES ('{$datetime}',24,'{$_POST[syn]}','{$_POST[fore]}','{$_POST[localfore]}','sample','sample','sample','sample','sample','sample','sample','sample','sample',$id)";
echo sql;

$save = mysql_query($sql);

【讨论】:

  • @Sarah : 你能在你的 sql server 中运行 $sql 的输出并告诉我你遇到了什么错误吗?
  • 它实际上不显示任何内容。我的意思是保存。但我尝试了 if(!($save)) echo mysql_error();,它显示该错误
  • @Sarah:我有打印 sql 查询。您需要复制该查询并在您的 sql server 客户端中运行它
  • 我正在使用 phpmyadmin。你是这个意思吗?
  • 是的,在您的 phpmyadmin 中运行此查询。
【解决方案2】:

直接保存帖子数据是非常糟糕的做法。相反,您可以在 sql 查询中使用 $syn = mysql_real_escape_string($_POST['syn']);$syn

【讨论】:

  • 嗨!我更新了我的代码。我使用了您的方法,但现在显示错误“检查与您的 MySQL 服务器版本相对应的手册,以获取在 ''2014-01-03 16:03:57',24,' VALUES ('$ datetime',24,'$_POST[syn]'' at line 2" 但我认为仍然没有错
【解决方案3】:

如果您以更易读的方式编写查询,您可能会发现一些错误:

INSERT INTO
    tblforecast
(
    Issued
    ,Valid
    ,Synopsis
    ,Forecast
    ,Local_Forecast
    ,Station11
    ,Station12
    ,Station13
    ,Station14
    ,Station15
    ,Station16
    ,Station17
    ,Station18
    ,Station19
    ,Forecaster
) VALUES (
    '$datetime'
    ,24
    ,'$_POST[syn]'
    ,'$_POST[fore]'
    ,'$_POST[localfore]'
    ,'sample'
    ,'$sample]' // <-- is that supposed to be there?
    ,'sample'
    ,'sample'
    ,'sample'
    ,'sample'
    ,'sample'
    ,'sample'
    ,'sample'
    ,$id // <-- where are the closing brackets?

【讨论】:

  • 嗨!我在输入时不小心放了一个“]”。我更新了我的代码 btw :)
猜你喜欢
  • 2017-04-13
  • 2014-12-06
  • 2013-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 2021-10-16
相关资源
最近更新 更多