【问题标题】:Reuse fetched data in PHP and MySQL with PDO使用 PDO 在 PHP 和 MySQL 中重用获取的数据
【发布时间】:2012-11-03 10:53:25
【问题描述】:

我正在使用 PHP 和 MySQL 编写一个会计系统,并使用 PDO 来处理数据库。在付款页面中,我必须有 2 个来自已定义帐户的下拉列表。
首先,我使用了一个简单的查询来获取帐户的所有记录。

$sql = "SELECT id,title FROM tbl_accounts WHERE uid = ? ORDER BY title";
$q = $db->prepare($sql);
$q->execute(array($uid));

我已将获取的行放入下拉列表中,一切正常。

<select name="account_id2" class="medium" id="account_id2">
    <option value="null">---</option>
    <?php
    while ($r = $q->fetch()) {
        echo '<option value="'.$r['id'].'">'.$r['title'].'</option>';
    }
    ?>
</select>

但是当我想使用获取的记录创建第二个下拉列表时,没有显示任何内容。所以我想我必须为它创建另一个查询。我做到了,第二个做对了。
但我的问题是:我们不能使用获取的数据超过 1 次吗?如果我需要第三个下拉菜单,我必须编写另一个查询?

【问题讨论】:

  • 提供用于循环获取的行的代码?是foreachwhile
  • 你能发布获取结果并使用它们的代码吗?

标签: php mysql pdo fetch


【解决方案1】:

根据您的条件循环,您可能需要使用reset() 重置数组指针。

更新:

要重置结果集,您可以使用 data_seek() 或构建一个单独的数组,如其他答案中所述。

【讨论】:

  • 我要在这里放什么? reset($r) ?
  • 我必须把它放在while()循环之前?还是在获取行之后?
  • 视情况而定,通常你应该把它放在你的下一个循环之前。我鼓励您阅读文档。
【解决方案2】:

使用$r = $q-&gt;fetchAll() 将获取的结果保存到数组中,然后循环通过$r 而不是在循环时获取。

【讨论】:

    【解决方案3】:

    为什么不在您第一次使用时将数据保存到数组中,这样您就不必为相同的数据再次打扰您的数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 2020-07-31
      • 2015-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多