PDO - 将具有相同变量的语句相乘

时间:2013-12-01 11:56:28

标签: php mysql pdo

我目前正在学习PDO。我试图使用相同的变量乘以while语句。现在,当我使用普通的MySQL时,我只使用了mysql_data_seek();函数,以便做到这一点。

我有这段代码:

$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 ?>

虽然第二次没有打印出来。那是为什么?

1 个答案:

答案 0 :(得分:1)

获取指针已到达Object的末尾。使用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。