我已经在phpMyAdmin中检查了这个查询,这是可以的,但是在php脚本中这不起作用。我已经尝试了6个多小时,但我不明白错误是什么。我在PDO语句中的$db->query($query)
中收到此错误。
SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在'UPDATE
的第4行更新`sefx'sefx_article_paras
SETsrl
='1'WHEREid
='24'附近使用正确的语法;在
但是当我尝试使用PDO exec时没有错误,但是没有执行UPDATE查询。
这是PHP生成的SQL:
更新`sef
x_article_paras`
SET `srl` = '1' WHERE `id` = '23';
UPDATE `sefx_article_paras`
SET `srl` = '1' WHERE `id` = '24';
UPDATE `sefx_article_paras`
SET `srl` = '1' WHERE `id` = '26';
UPDATE `sefx_article_paras`
SET `srl` = '1' WHERE `id` = '27';
UPDATE `sefx_article_paras`
SET `srl` = '1' WHERE `id` = '31';
....................
UPDATE `sefx_article_paras`
SET `srl` = '8' WHERE `id` = '196';
UPDATE `sefx_article_paras`
SET `srl` = '8' WHERE `id` = '211';
UPDATE `sefx_article_paras`
SET `srl` = '8' WHERE `id` = '229';
答案 0 :(得分:-1)
PDO不允许在预准备语句中进行多次查询。将它们拆分为多个查询或使用代码将它们拆分;
<?php
// $sql is your SQL
$sqls = explode(';', $sql);
$db->query('BEGIN');
foreach($sqls as $sql) {
if (trim($sql)) {
$db->query($sql);
}
}
$db->query($sql);
?>