我想像这样更新我的表:
Update MyTable
SET value = 1
WHERE game_id = 1,
x =-4,
y = 8
SET value = 2
WHERE game_id = 1,
x =-3,
y = 7
SET value = 3
WHERE game_id = 2,
x = 5,
y = 2
Run Code Online (Sandbox Code Playgroud)
我可以做一个foreach()但是会发送超过50个单独的查询,这非常慢.这就是我希望将它组合成一个大查询的原因.
(我确实为每一行使用了一个id,但game_id,x和y的组合是我用来识别我需要的行的方法.)
这里描述的codeIgniter中的update_batch()函数: 使用CodeIgniter更新批处理 是有帮助的并且几乎完美但它只允许1个单个where子句,你不能(据我理解并尝试过)输入一个包含多个where子句的数组.
我也检查了这个问题: MYSQL UPDATE SET在同一列但有多个WHERE子句 但它只允许多行更新只包含一个不同的WHERE子句,我需要多个WHERE子句!:)
Anwsers可以使用简单的SQL,也可以使用php(和CodeIgniter)或以不同的方式使用.我想以任何可能的方式解决这个问题;)
我真的可以使用建议/帮助!= d
我检查了CI用户指南以了解如何处理update_batch(),似乎它接受一个索引来匹配要更新的行.
但在我的实例中,我需要指定两个索引,lang并将id_page其作为索引一起使用.这lang=en|id_page=115是唯一的,所以行的关键.
手段,我的指数应该是WHERE lang = $lang AND id_page = $id_page......
有多个索引的批量更新有什么方法吗?
谢谢.
php mysql activerecord codeigniter content-management-system
我正在使用codeigniter update_batch功能.
我想将一个数组作为第三个参数(where子句)传递给update_batch.
$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'
)
);
Run Code Online (Sandbox Code Playgroud)
而不是这个:
$this->db->update_batch('mytable', $data, 'title');
Run Code Online (Sandbox Code Playgroud)
我想做这个:
$this->db->update_batch('mytable', $data, array('title','name'));
Run Code Online (Sandbox Code Playgroud)
因此添加了多个条件.
这可能吗?