【问题标题】:Zend Framework Using fetch() statement in a loop, internal query doesn't workZend Framework 在循环中使用 fetch() 语句,内部查询不起作用
【发布时间】:2012-10-27 14:24:55
【问题描述】:

我无法解决这个问题。

我有多个while,里面的那个只获取第一个结果并停止......

代码如下:

$categories 是一个数组

array(18) {
  [0] => array(7) {
["category_id"] => string(1) "1"
["category_name"] => string(5) "pizza"
["category_display"] => string(5) "pizza"
["category_active"] => string(1) "1"
["category_parent"] => string(1) "0"
["category_position"] => string(1) "1"
["category_user_discount"] => string(2) "50"
}
[1] => array(7) {
["category_id"] => string(1) "2"
["category_name"] => string(4) "menu"
["category_display"] => string(4) "menu"
["category_active"] => string(1) "1"
["category_parent"] => string(1) "0"
["category_position"] => string(1) "2"
["category_user_discount"] => string(2) "30"
}
}

$stmt = $db->query("SELECT sell_id FROM sell WHERE sell.sell_status = 'close' AND sell_period_id >= '".$liste[0]."' AND sell_period_id <= '".$liste[1]."' ");

foreach ($categories as $cat)
{
    while ($sell2 = $stmt->fetch())
    {
        $stmt2 = $this->db->query("SELECT * FROM sellcart WHERE sellcart_status = 'close' AND sellcart_sell_id =  '".$sell2['sell_id']."' ");

        while ($sellitem = $stmt2->fetch())
        {
            echo $sellitem['sellcart_item_category'];
        }
    }
}

第一个循环没问题,但它没有循环到第二个 $cat ...

有什么想法吗?

感谢您的帮助!!!

【问题讨论】:

  • 很明显的问题,SQL 返回的结果不止一个?可能需要进行更多调试才能在此处获得帮助。
  • 是的,当然,但是感谢您的提问...我认为有两个链接丢失了,但我找不到如何修复它。当然,我可以使用 fetchAll,但是数据太大,占用太多内存,这就是为什么我希望使用 fetch()...

标签: php zend-framework pdo while-loop fetch


【解决方案1】:

我知道答案为时已晚,但问题是,在第二次获取 php 后关闭连接或第一次获取没有更多值并返回 false。也许您可以尝试使用第二个连接进行第二次提取。

对不起我的英语。

// for example ..............
$db = Zend_Db::factory($config["database"]["adapter"],$config["database"]        ["params"]);
$db2 = $db = Zend_Db::factory($config["database"]["adapter"],$config["database"]["params"]);
//  .......
$stmt = $db->query("SELECT sell_id FROM sell WHERE sell.sell_status = 'close' AND sell_period_id >= '".$liste[0]."' AND sell_period_id <= '".$liste[1]."' ");

foreach ($categories as $cat) {
    while ($sell2 = $stmt->fetch()) {
        $stmt2 = $db2->query("SELECT * FROM sellcart WHERE sellcart_status = 'close' AND sellcart_sell_id =  '".$sell2['sell_id']."' ");

        while ($sellitem = $stmt2->fetch()) {
            echo $sellitem['sellcart_item_category'];
        }
    }
}

【讨论】:

    猜你喜欢
    • 2016-03-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    相关资源
    最近更新 更多