【问题标题】:PHP/Mysql syntax error with insert插入的 PHP/Mysql 语法错误
【发布时间】:2014-08-20 18:38:24
【问题描述】:

谁能告诉我我的请求哪里错了?

$sql = "INSERT INTO order (order_id,prod) VALUES ('','".$prod."')";
mysql_query($sql) or die ('Error SQL !'.$sql.'<br />'.mysql_error());
$_SESSION['orderid']=mysql_insert_id();

这是我的表配置:

order 表的列:

'order_id'=>int(11) auto_increment
'prod'=> varchar(20) utf8_general_ci

这是错误信息:

错误 SQL !INSERT INTO order (order_id,prod) VALUES ('','xxx') 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“order (order_id,prod) VALUES ('','xxx')' 附近使用正确的语法

谢谢

【问题讨论】:

  • 请查看 PDO 或 MySQLi 以进行数据库处理。 MySQL 现已弃用
  • 另外,发布 $prod 的值会有所帮助:)
  • 贴在错误信息中(即:xxx)

标签: php mysql sql-insert


【解决方案1】:

ORDER 是保留关键字,恰好是您的列/表的名称。为避免语法错误,您需要使用反引号对其进行转义。例如

`ORDER`

如果您有修改表的权限,请将表名改为非保留关键字,以免问题再次发生。

Waring: Please, don't use mysql_* functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDOMySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial

【讨论】:

    【解决方案2】:

    $insert="INSERT INTO order (order_id,prod) 值 ('','".$prod."')";

    【讨论】:

      【解决方案3】:

      用这个替换,只用单引号和表名

      $sql = "INSERT INTO `order` (order_id,prod) VALUES ('','".$prod."')";
      

      【讨论】:

        【解决方案4】:

        试试这个:

        INSERT INTO `order` (order_id,prod) VALUES ('','".$prod."')
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多