【问题标题】:SQL syntax error - Why? [duplicate]SQL 语法错误 - 为什么? [复制]
【发布时间】:2012-02-22 22:17:38
【问题描述】:

我已经检查了这段代码无数次,但看不出有什么问题。但它给了我消息,“错误:您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在 'when、name、reporter、contacts、Suggestions、remarks) 附近使用('我又来了','我','在第 1 行"

请帮忙!

对不起,对不起,我太棒了!急着找工作,我粘贴了错误的代码。这是正确的代码行。

$sql="INSERT INTO one_on_one_reports (whenever, name, reporter, contacts, suggestions, remarks) VALUES ('$_POST[whenever]', '$_POST[name]', '$_POST[reporter]', '$_POST[contacts]', '$_POST[suggestions]', '$_POST[remarks]')";

我在两次驾驶之间。又得跑了。但我再次为错误的粘贴道歉。稍后我会考虑防止注射。此文件位于受密码保护的文件夹中,如果这有什么不同的话。

布鲁斯

【问题讨论】:

  • 这段代码肯定有问题:你没有清理你的查询参数!!把这也当作部分答案。
  • 欢迎来到 Stack Overflow!您显示的代码易受SQL injection 的攻击。使用正确的库清理方法(例如经典 mysql 库的mysql_real_escape_string()),或切换到 PDO 和准备好的语句。
  • 您确定该错误与此特定查询有关吗?我看到错误中的字段不在您的查询中。
  • 您能发布完整的查询吗?我认为您没有正确转义您的数据,这会导致您出现问题。
  • 同意所有以前的 cmets。您发布的代码似乎不是正确的位。 when, name, reporter, contacts, suggestions, remarks 在插入列表中的什么位置?

标签: php sql syntax


【解决方案1】:

看起来错误不是来自您期望的查询。错误中提到的字段名称未列出:

when, name, reporter, contacts, suggestions, remarks

错误很简单,WHEN是保留关键字,需要转义。

`when`, name, reporter, contacts, suggestions, remarks

说到转义,你不是太强,对数据使用适当的转义函数,避免SQL注入。

【讨论】:

    【解决方案2】:

    WHENreserved word in mySQL.

    要么重命名列,要么用反引号括起来:

    `WHEN`
    

    【讨论】:

    • 在编写一个对音乐发布进行分类的网络应用程序时,这让我大吃一惊,原来“发布”也是一个保留词:) 总是很高兴被提醒!
    【解决方案3】:
    【解决方案4】:

    试试

    $name = mysql_real_escape_string($_POST[name]);
    $vote = mysql_real_escape_string($_POST[vote]) ;
    $comments = mysql_real_escape_string($_POST[comments]) ;
    
    $sql="INSERT INTO ms_poll (name, vote, comments) VALUES ('$name', '$vote', '$comments')";
    

    【讨论】:

    • 它并没有真正解决问题,但 +1 用于展示如何转义数据库字符串
    【解决方案5】:

    尝试在 POST 参数周围加上花括号 - 当然是在清理它们之后

    喜欢这个

    $sql="INSERT INTO ms_poll (name, vote, comments) VALUES ('{$_POST['name']}', '{$_POST['vote']}', '{$_POST['comments']}')";
    

    为了清理你的传入数据,我建议使用本机方法而不是addlashes()(如果你是mysql,那么可能是mysql_real_escape_string(),或者更好的想法是使用改进的扩展,这意味着使用mysqli_real_escape_string())

    【讨论】:

    • 大声笑 - 直到 4 分钟前查看帖子,我才发现缺少表格的事情 - 我也将从那里开始!
    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    相关资源
    最近更新 更多