2017-01-03 6 views
0

Я пытаюсь создать поле выбора, которое будет отображаться несколько раз на странице, где параметры заполняются моим SQL-запросом. Я могу получить это, чтобы отображать один раз, но когда я пытаюсь создать второй, идентичный флажок select, в раскрывающемся списке нет параметров. Вот что я имею в виду:Reuse PDO result set несколько раз

<?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'); 
}; 
+0

Вы просите для [курсора] (http://stackoverflow.com/questions/1155211/what-is-pdo-scrollable -курсор) вы можете перемотать назад. Не знаю, поддерживает ли MySQL или PDO это. Однако часто рекомендуется как можно скорее освободить набор результатов (если не для производительности, по крайней мере, с точки зрения дизайна). Поэтому я бы действительно сохранил информацию в переменной, прежде чем использовать ее. –

ответ

1

Вы можете только цикл через отчет PDO один раз, так что вы должны поместить результат во временном массиве.

Вместо:

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

ли

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

Это именно то, что я искал. Спасибо огромное! – heat222