代码:
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语法错误?我做错了什么?
答案 0 :(得分:1)
您在INSERT语句中缺少字符串连接:
$uz = mysql_query("INSERT INTO `cars`
(n_id, auto_id)
VALUES "
. $insert .") or die(mysql_error());
假设你的元组支持的尾随逗号也没有问题。
答案 1 :(得分: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。
答案 2 :(得分:-1)
使用反引号(在汽车周围)与单引号(在$ insert附近)混合使用时,据我所知,在mySQL中。选择一个或另一个 - 可能建议使用单引号进行标准化。
答案 3 :(得分:-1)
在General SQL Management上,它将此示例用于插入:
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'"
查看您要发送的内容。