我想在一个语句中更新多行。我正在使用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;'附近有语法错误。我不知道我做错了什么。
答案 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。这基本上用于执行一个或多个查询,这些查询由分号连接。