【问题标题】:PDO: Fetch and FetchAll on the same StatementPDO:Fetch 和 FetchAll 在同一个语句上
【发布时间】:2015-05-21 18:51:28
【问题描述】:

您好,我有以下代码,它从我拥有的表中选择一些结果。我没有包含 SQL/Table 结构,因为我知道 SQL 语句按预期运行。

我的问题是当想要“回收”一个准备好的语句时,即我只想fetch 第一个结果然后fetchAll 结果。当我fetchAll时,结果集只包含一个结果(最后一个结果),但应该有两个结果。

    $stmt = $conn->prepare(*SQL STATEMENT*);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_CLASS| PDO::FETCH_PROPS_LATE,'MyClass');
    $oneResult = $stmt->fetch();
    echo $oneResult->get_Name();

    $allResults = $stmt->fetchAll;
    foreach($allResults as $row){
        echo $row->getField_Name();
   }

是否可以在不准备新语句的情况下连续使用fetchAllfetch

【问题讨论】:

  • 为什么不能只获取所有结果,然后使用该数组的第一个元素?您描述的行为在大多数情况下实际上是有益的。
  • 为什么不使用 fetchall,然后通过指定要回显第一个结果来回显第一个结果?
  • @raina77ow 感谢您的帮助,这解决了我的问题。请将此作为答案,我会接受它

标签: php mysql database pdo


【解决方案1】:

只需使用 fetchall 然后使用生成的数组来获取您的第一个然后进行迭代:

$stmt = $conn->prepare(*SQL STATEMENT*);
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_CLASS| PDO::FETCH_PROPS_LATE,'MyClass');
$allResults = $stmt->fetchAll;
$oneResult = each($allResults);
echo $oneResult->get_Name();
foreach($allResults as $row){
    echo $row->getField_Name();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    • 2022-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多