0

代码:

for($i = 1; $i <= $arr['var']; $i++) {

  if($i == $arr['var']):

    $insert .= '('.$n_id.', 12)';

  else:

    $insert .= '('.$n_id.', 12),';

  endif;

}

$uz = mysql_query("INSERT INTO `cars`
                   (n_id, auto_id)
                   VALUES
                   '$insert'") or die(mysql_error());

为什么它给我一个 SQL 语法错误?我究竟做错了什么?

4

4 回答 4

1

您在 INSERT 语句中缺少字符串连接:

$uz = mysql_query("INSERT INTO `cars`
                     (n_id, auto_id)
                   VALUES "
                    . $insert .") or die(mysql_error());

那是假设您对用于元组支持的尾随逗号也没有问题。

于 2010-06-22T16:50:35.923 回答
0
  • 您的未扩展查询是这样的:

    INSERT INTO `cars` (n_id, auto_id) VALUES '$insert'
    

    然后,$insert扩展后,它可能看起来像这样:

    INSERT INTO `cars` (n_id, auto_id) VALUES '(1,12),(2,12),(3,12)';
    
  • 数据列表周围的那些单引号 ( ') 不应该在那里,因为单引号分隔字符串。

  • 相反,你想要:

    INSERT INTO `cars` (n_id, auto_id) VALUES (1,12),(2,12),(3,12);
    

    将其重新折叠到您的 PHP 中,您最终会得到:

    INSERT INTO `cars` (n_id, auto_id) VALUES $insert
    

tl; dr:删除's。

于 2011-11-07T16:19:19.557 回答
-1

据我所知,在 mySQL 中,与单引号(围绕 $insert)混合使用反引号(围绕汽车)是不正确的。选择一个或另一个 - 可能建议使用单引号进行标准化。

于 2010-06-22T16:52:13.500 回答
-1

通用 SQL 管理中,它给出了以下插入示例:

INSERT INTO [table]
( [field1], [field2], [field3] ) VALUES
( '[value1.1]', '[value1.2]', '[value1.3]' ),
( '[value2.1]', '[value2.2]', '[value2.3]' ),
( '[value3.1]', '[value3.2]', '[value3.3]' ),
etc.

您可能有一些语法问题。我建议打印出来

"INSERT INTO `cars`
       (n_id, auto_id)
       VALUES
       '$insert'"

查看您发送的内容。

于 2010-06-22T16:52:54.687 回答