2013-12-01 2 views
0

В настоящее время я изучаю PDO. Я пытаюсь умножить while, используя ту же переменную. Теперь, когда я использовал обычный MySQL, я просто использовал функцию mysql_data_seek();, чтобы сделать это.PDO - Умножить операторы с той же переменной

У меня есть этот код:

$r = $dbh->prepare("SELECT * FROM memberships ORDER by sort DESC"); 
$r->bindParam(':id', $userdata['membership']); 
$r->execute(); 

<?php while($upgData = $r->fetch(PDO::FETCH_ASSOC)): ?> 
echo $upgData['id']; 
<?php ?> 

Затем дальше вниз код, я хочу, чтобы использовать его снова:

<?php while($upgData = $r->fetch(PDO::FETCH_ASSOC)): ?> 
echo $upgData['name']; 
<?php ?> 

Хотя, во второй раз, ничего не получает распечатанный. Почему это?

+0

Указатель на выборку достиг конца объекта. Сбросить его –

+0

Как его сбросить? – oliverbj

+0

Возможный дубликат [Сбросить позицию курсора в PDO] (http://stackoverflow.com/questions/15111681/reset-cursor-position-in-pdo) – user4035

ответ

1

Указатель на выборку достиг конца объекта. Используя расширения MySQLi или MySQL, можно было сбросить этот указатель на первый элемент, но PDO, похоже, не предлагает такую ​​функциональность AFAIK. Один из способов - сначала получить все значения в массиве.

$rows = $r->fetchAll(); 

Затем перебирать этот массив в два раза

foreach ($rows as $r) { 
    echo $r['name']; 
} 

foreach ($rows as $r) { 
    echo $r['name']; 
} 

Использование MySQLi или расширения MySQL можно было сбросить этот указатель на первый элемент, но PDO, кажется, не предлагают такую ​​функциональность AFAIK.

Смежные вопросы