Ale*_*tau 1 php mysql zend-framework
我有一个简单的数组.
$a = array(
array('id' => 2, 'year' => 2010),
array('id' => 3, 'year' => 2011)
);
Run Code Online (Sandbox Code Playgroud)
我有一个带id主键的MySQL表.现在我像这样更新我的表:
foreach ($a as $v) {
$db->update($v, array('id = ?' => $v['id']));
}
Run Code Online (Sandbox Code Playgroud)
我的$a行包含3700行.我需要创建一个大查询而不是循环.怎么办?先感谢您.对不起我的英语不好.
您经常不会这样做,因为您通常会将update()大量记录设置为具有相同的值,或者将一条记录设置为具有许多不同的值.
解决这个问题的一种方法是聚合更新,因此使用您的数组获取2011年的所有ID,然后运行:
$where = array();
// This where should contain all the ids that need the year set to 2011
// E.g.
$where[] = array("id" => 3);
$db->update("table_name", array("year" => 2011), $where);
Run Code Online (Sandbox Code Playgroud)
这样做会减少查询次数,假设您有多年同一行.这方面的文档就在这里.
或者你可以使用的方法是这样
OP响应后编辑
问题的本质意味着它无法有效地解决.
您要求使用非常不同的数据集更新3,700行数据.如果数据集不同,那么就没有可以利用的模式来实现这种效果.查找模式,例如同年的行,并将它们用于您的优势将提高查询的速度,但需要像regilero所指出的那样以阵列混搭的形式进行大脑管理.