【问题标题】:Reuse a mysql query resultset on same PHP page [duplicate]在同一 PHP 页面上重用 mysql 查询结果集 [重复]
【发布时间】:2022-01-25 08:57:51
【问题描述】:

我有一个工作结果集,它在运行时循环显示作者和链接列表。工作正常。我需要能够在同一页面中显示相同的数据集两次。我宁愿不要两次运行相同的查询。如何将结果集(如下所示的显示输出)设置为 var,并在两个表示点获得相同的输出?前段时间我看到了一些关于使用 for each 循环的内容,但不知道该怎么做。

查询:

if($stmtr = mysqli_prepare($link, $sql8)){
  // Bind variables to the prepared statement as parameters
  mysqli_stmt_bind_param($stmtr, "s", $param_stripurlslash);

// Set parameters
  $param_stripurlslash = $stripurlslash;

// Attempt to execute the prepared statement
if(mysqli_stmt_execute($stmtr)){
    $resultAuthor = mysqli_stmt_get_result($stmtr);
    $usera = mysqli_fetch_assoc($resultAuthor, MYSQLI_ASSOC);              
} else {
    echo "Oops! Something went wrong. Please try again later.";
} 

}

显示输出:

<?php                         
    while ($row = mysqli_fetch_assoc($resultAuthor)) {

      if ($row['book_author_first_name_only'] == 0 ) {
        echo "<a class='fw-bold author-link' href='#" . $row['book_id'] . "'>" . $row['book_author_first_name'] . '&nbsp;' . $row['book_author_last_name'] . "</a>";
      } else {
        echo "<a class='fw-bold author-link' href='#" . $row['book_id'] . "'>" . $row['book_author_first_name'] . "</a>";
      }
    }
?>

【问题讨论】:

标签: php mysqli


【解决方案1】:

老实说,你已经完成了 99% 的工作。

你可以替换这个:

while ($row = mysqli_fetch_assoc($resultAuthor)) {
  if ($row['book_author_first_name_only'] == 0 ) {
    echo "<a class='fw-bold author-link' href='#" . $row['book_id'] . "'>" . $row['book_author_first_name'] . '&nbsp;' . $row['book_author_last_name'] . "</a>";
  } else {
    echo "<a class='fw-bold author-link' href='#" . $row['book_id'] . "'>" . $row['book_author_first_name'] . "</a>";
  }
}

与:

$rows = mysqli_fetch_all($resultAuthor, MYSQLI_ASSOC);

一次获取所有行并将它们存储在一个数组中 ($rows)。

您会注意到这与您在 while (...) { } 循环中使用的每次 1 条记录的版本非常相似。

现在您可以根据需要简单地迭代这些数据:

foreach ($rows as $row) {
    if ($row['book_author_first_name_only'] == 0 ) {
        echo "<a class='fw-bold author-link' href='#" . $row['book_id'] . "'>" . $row['book_author_first_name'] . '&nbsp;' . $row['book_author_last_name'] . "</a>";
    } else {
        echo "<a class='fw-bold author-link' href='#" . $row['book_id'] . "'>" . $row['book_author_first_name'] . "</a>";
    }
}

// and again
foreach ($rows as $row) {
    // ... do something else with each $row
}

// and again
foreach ($rows as $row) {
    // ... do something else with each $row
}

【讨论】:

  • 效果很好。谢谢!
猜你喜欢
  • 2011-08-15
  • 1970-01-01
  • 2019-03-21
  • 2011-10-18
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多