无法在一个语句中执行多个更新查询

时间:2014-03-05 05:02:00

标签: php mysql sql database codeigniter

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

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

但是它给了我错误,说我在'update students set id = 13 where id = 11;'附近有语法错误。我不知道我做错了什么。

5 个答案:

答案 0 :(得分:6)

您可以使用codeigniter Active记录批量更新:

$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'); 

答案 1 :(得分:3)

使用批量查询

$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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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