【问题标题】:Cannot execute multiple update queries in one statement [duplicate]无法在一个语句中执行多个更新查询[重复]
【发布时间】:2014-03-05 05:02:00
【问题描述】:

我想在一个语句中更新多行。我正在使用 CodeIgniter 框架。我的代码如下。

$query = "update students set id = 12 where id = 10; update students set id = 13 where id = 11;";
$this->db->query($query);

但它给了我错误,说我在“更新学生集 id = 13 其中 id = 11;”附近有语法错误我不知道我做错了什么。

【问题讨论】:

    标签: php mysql sql database codeigniter


    【解决方案1】:

    你可以使用codeigniter活动记录批量更新:

    $data = array(
       array(
          'title' => 'My title' ,
          'name' => 'My Name 2' ,
          'date' => 'My date 2'
       ),
       array(
          'title' => 'Another title' ,
          'name' => 'Another Name 2' ,
          'date' => 'Another date 2'
       )
    );
    
    $this->db->update_batch('mytable', $data, 'title'); 
    

    【讨论】:

      【解决方案2】:

      为此使用批量查询

      $data = array(
         array(
            'title' => 'My title' ,
            'name' => 'My Name 2' ,
            'date' => 'My date 2'
         ),
         array(
            'title' => 'Another title' ,
            'name' => 'Another Name 2' ,
            'date' => 'Another date 2'
         )
      );
      
      $this->db->update_batch('mytable', $data, 'title');
      
      // Produces:
      // UPDATE `mytable` SET `name` = CASE
      // WHEN `title` = 'My title' THEN 'My Name 2'
      // WHEN `title` = 'Another title' THEN 'Another Name 2'
      // ELSE `name` END,
      // `date` = CASE
      // WHEN `title` = 'My title' THEN 'My date 2'
      // WHEN `title` = 'Another title' THEN 'Another date 2'
      // ELSE `date` END
      // WHERE `title` IN ('My title','Another title')
      

      更多信息:- https://www.codeigniter.com/userguide2/database/active_record.html#update

      【讨论】:

        【解决方案3】:

        问题很可能是 mysql_query 一次只处理一个查询。 http://au2.php.net/mysql_query

        【讨论】:

          【解决方案4】:

          Mysql_query() 函数一次只能处理一个查询。所以你可以使用

          $this->db->update_batch('table_name', $data_array, 'unique_field');
          

          【讨论】:

            【解决方案5】:

            如果你在谈论mysql,那么你可以使用mysqli::multi_query。这基本上用于执行一个或多个由分号连接的查询。

            【讨论】:

              猜你喜欢
              • 2016-12-26
              • 1970-01-01
              • 1970-01-01
              • 2014-03-03
              • 2012-08-15
              • 2014-07-24
              • 2017-02-02
              • 2017-01-11
              相关资源
              最近更新 更多