foreach循环中的奇怪变量覆盖

时间:2015-03-13 16:31:18

标签: php yii foreach sql-update

这一定是丑陋明显的事情,但我坚持这一点,过去两个小时都无法解决。

我有这段代码:

foreach($idMap as $menuId=>$pageId)
{
    echo('$this->update("menus_items", SET "link = /content/show?id='.$pageId.'" WHERE id = '.$menuId.');'."\n");

    $this->update
    (
        'menus_items',
        array('link'=>'/content/show?id='.$pageId),
        array('id = '.$menuId)
    );
}

echo部分按预期工作($pageId对于每个项目都有所不同,取自$idMap),而Yii的CDbCommand::update()获得wako且$pageId相等它是所有循环迭代的最后一个值。

换句话说,如果我有20个菜单项,结果集中的最后一项有pageId = 18,那么当使用CDbCommand::update()时,我得到 all < / em>菜单项设置为最后一个值。

这里必须有一些变量覆盖,但过去两个小时我找不到它,尤其是echo只放一行就行了。有人可以帮忙吗。

1 个答案:

答案 0 :(得分:2)

猜测,但$this->update()期望一个数组的绑定参数?

$this->update
    (
        'menus_items',
        array(
            'link' => '/content/show?id='.$pageId,
            'id' => $menuId
        )
    );