当前位置: 首页 > 面试题库 >

此结果是仅向前结果集,不支持向前移动后调用rewind()-Zend

姜晨
2023-03-14
问题内容

在Zend应用程序中,我使用Zend\Db\TableGatewayZend\Db\Sql从MySQL数据库中检索数据数据,如下所示。

型号-

public function getCandidateEduQualifications($id)
{
    $id  = (int) $id;

    $rowset = $this->tableGateway->select(function (Sql\Select $select) use ($id)
    {
        $select->where
            ->AND->NEST->equalTo('candidate_id', $id)
            ->AND->equalTo('qualification_category', 'Educational');
    });

    return $rowset;
}

查看-

我只是迭代$ rowset并在视图中回显。但是,当尝试回声两次或更多次时,它将产生错误。单次迭代有效。

此结果是仅向前结果集,不支持向前移动后调用rewind()

我可以通过将其加载到视图中的另一个数组来解决它。但这是最好的方法吗?还有其他方法可以解决吗?

$records = array();
foreach ($edu_qualifications as $result) {
    $records[] = $result;
}

编辑-

$resultSet->buffer(); 解决了问题。


问题答案:

您收到此消息,Exception因为这是预期的行为。Zend使用PDO来获取Zend\Db\ResultSet\Resultset由PDO返回的PDOZend\Db\TableGateway\TableGateway。默认情况下,PDO结果集使用只进游标,这意味着您只能在该结果集中循环一次。

有关游标的更多信息,请维基百科和此文章。

Zend\Db\ResultSet\Resultset实现PHP时,Iterator您可以使用Zend\Db\ResultSet\Resultset:toArray()方法或iterator_to_array()函数提取集合的数组。不过,在可能较大的数据集上使用此功能时请务必小心!关于游标的最好的事情之一就是,如果数据集太大,它们就避免一次性输入所有内容,因此有时您不想一次将它们全部放入一个数组中。



 类似资料:
  • 问题内容: 我正在尝试通过以下方式获取结果集的行数: 但我收到一个错误。结果集从Oracle 10g数据库获取其数据。 这是我建立连接的方式: 问题答案: 和其他“绝对索引”查询操作仅在结果集 可滚动 时可用;否则,您只能在仅 转发 结果集中进行一个接一个的迭代。 以下示例(来自javadocs)演示了如何创建scrollable 。 请记住,使用滚动查询会对性能产生影响。如果此特定目标仅是获取其

  • JDBC ResultSet是否支持分页?或者我应该通过缓存结果集来在我的服务中实现内部分页。我寻找这样一个解决方案的原因是-我不允许更改表结构。如果允许,我可以有一个自动增量列,然后使用该列和限制上的子句获取数据。

  • 问题内容: 我正在为Google Chrome创建(学习)扩展程序。 为了调试一些代码,我插入,如下所示: 这是非常简单的代码:将所有选项卡信息放入我自己的数组中,并打印一些内容。 为了检查代码是否可以正常工作,我运行了代码。问题来了: 当我使用断点(通过开发人员工具)时,代码运行良好。 没有断点,什么都不会打印。 知道为什么吗? 问题答案: 您的问题可以简化为: 您希望在到达第5行时更新数组(由

  • 我创建了一个应用程序,其中一个地点列表保存在数据库中。我只根据Google留档保存了保存地点的地点ID。 然后我创建了一个界面,让用户输入他们的当前位置(mCurrentLocation)。 然后,我创建了一个异步任务,检查数据库中保存的每个地点ID,并检查哪些地点距离用户位置500米以内。这是在doInBackground中完成的。根据Google文档,我使用了getPlaceById和setR

  • 问题内容: 当我尝试在java类中执行上述查询时,出现如下 异常 。这是orderedProduct(orderedZnAlProduct)的表格 问题答案: 我看不到查询的执行位置(例如statement.executeQuery()),但是,当光标位置不正确时,通常会发生这种错误。您需要调用类似或移动光标的方法,然后才能获得结果。

  • 是否可以创建,它将调用托管bean中的方法,并从那里执行转发到另一个jsf页面? 事先谢谢。