【问题标题】:Is my SQL syntax really wrong? [closed]我的 SQL 语法真的错了吗? [关闭]
【发布时间】:2012-08-11 18:19:44
【问题描述】:

这是我用来在数据库中插入值 $id$str$name 的代码:

$r=mysql_query("INSERT INTO varta(id,data,name) VALUES('$id','$str','$name');");

但我收到上述语句的语法错误。这是为什么?我的语法真的错了吗?

【问题讨论】:

  • 你得到什么错误?
  • 没有变量的值是不可能知道的。
  • 请停止使用古老的 mysql_* 函数编写新代码。它们不再维护,社区已经开始deprecation process。相反,您应该了解准备好的语句并使用PDOMySQLi。如果你想学习,here is a quite good PDO-related tutorial.
  • 请在每次遇到问题时,如果遇到错误,请说出错误是什么。谢谢! (被否决)

标签: php mysql syntax insert


【解决方案1】:

尝试在查询词之间添加空格并确保转义输入

$id = mysql_real_escape_string($id);
$str = mysql_real_escape_string($str);
$name = mysql_real_escape_string($name);

$r=mysql_query("INSERT INTO varta (id,data,name) VALUES ('$id','$str','$name');");

或者更好 - 看看 MySQLiPDO 并使用准备好的语句。

【讨论】:

    【解决方案2】:

    只要您的输入变量被正确转义,您的代码看起来还不错。试试这个,这样你就可以看到你正在执行的语句:

    $s = "INSERT INTO varta (id,data,name) VALUES('$id','$str','$name');";
    echo $s;
    $r = mysql_query($s);
    

    检查您的变量是否不包含撇号,例如“Daisy O'Donnel”(这表明您没有正确转义它们)。

    【讨论】:

    • 好的,你写了它是如何被滥用的,我试图指出他们如何看到错误..
    • BugFinder,一旦疏漏被指出,追溯修复就好了!我现在已经这样做了,并且 +1 用于将查询分开以便可以回显。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 2011-11-23
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    相关资源
    最近更新 更多