【问题标题】:Reuse PDO result set multiple times [duplicate]多次重用PDO结果集[重复]
【发布时间】:2017-01-03 17:45:41
【问题描述】:

我正在尝试创建一个将在页面上多次显示的选择框,其中选项由我的 SQL 查询填充。我可以让它显示一次,但是当我尝试创建第二个相同的选择框时,下拉框中没有选项。这是我的工作:

 <?php include_once "app/init.php";
      $dataQuery = $db->prepare("
      SELECT column FROM dataType");

  $dataQuery->execute([]);
  $dataTypes = $dataQuery->rowCount() ? $dataQuery : [];
?>

<div>
   <select>
      <?php foreach($dataTypes as $dataType): ?>
          <option>
               <?php echo $dataType['dataType']; ?>
          </option>
      <?php endforeach; ?>
    </select>
 </div>

但是当我尝试添加第二个选择框时,它是空白的。我正在创建一个表,该表的每一行都有这个选择框,供用户选择数据类型,所以我需要多次动态地重新创建它。我是php新手,那么最好的方法是什么?

我的 init.php 使用 PDO 显示:

<?php session_start();
  $_SESSION['user']=1;
  $db = new PDO ('mysql:dbname=myDB;host=localhost', 'root', 'root');
  if(!isset($_SESSION['user'])) {
     die('You are not signed in');
 };

【问题讨论】:

  • 您要求的 cursor 类型可以倒带。不知道 MySQL 或 PDO 是否支持。但是,尽快发布结果集通常是一个好主意(如果不是为了性能,至少从设计的角度来看)。所以我真的会在使用之前将信息存储在变量中。

标签: php


【解决方案1】:

PDO 语句只能循环一次,因此应将结果放入临时数组中。

代替:

$dataTypes = $dataQuery->rowCount() ? $dataQuery : [];

$dataTypes = $dataQuery->fetchAll(\PDO::FETCH_ASSOC);

【讨论】:

  • 这正是我想要的。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2014-08-20
  • 2016-01-28
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多