我目前正在学习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 ?>
虽然第二次没有打印出来。那是为什么?
答案 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。