【问题标题】:why multiple update statement not working为什么多个更新语句不起作用
【发布时间】:2014-02-05 10:24:20
【问题描述】:

我已经在 phpMyAdmin 中检查了这个查询,它没问题,但是在 php 脚本中这不起作用。我已经尝试了 6 个多小时,但我不明白错误是什么。我在 PDO 语句中的 $db->query($query) 中收到此错误。

SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'UPDATE sefx_article_paras SET srl = '1' WHERE id = '24' 附近使用正确的语法; UPDATE `sefx' at line 4' in

但是当我尝试使用 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';

【问题讨论】:

标签: mysql pdo


【解决方案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);
?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多