由于我已经更改为PDO,所以我真的无法得到正确的函数来使用它来完成mysqli_fetch_array()所做的事情,这可能是因为我不太了解mysqli_fetch_array和PDO的fecth()之间的真正区别。
当( $row = mysqli_fetch_array($query) )“每次调用结果集时从结果集中获取一行”时,$row= $query->fetch()在一个调用中返回整个结果集。
我问了两个类似的问题,一个是有赏金的,但我似乎找不到合适的方法来解决我想做的事情。
$data = $query->fetchAll(PDO::FETCH_BOTH)
使用这个列表中的第一个似乎与mysqli_fetch_arrray的行为不同。
我尝试的是在while循环中返回这么多错误,有时还会使浏览器崩溃,多亏了Chrome,我不会发布这些错误。
,这是我想做的,。
$counter = 0;
while($row = mysqli_fetch_array($query)){
$counter++;
echo $counter;
echo $row['Name'];
}如果我们有三行:结果;
1
TRIQUESHA
2
STACEY
3
DAQUEN现在PDO
$count = 0;
while($row = $query->fetch(PDO::FETCH_BOTH)){
$counter++;
echo $counter;
echo $row['Name'];
}同样,如果我们有三行:PDO结果;
3
TRIQUESHA
3
STACEY
3
DAQUEN它没有计数,而是返回总行数,如果我有50行,它将在每一行上重复50行。
我做错了什么?
发布于 2014-08-16 06:02:14
$count和$counter是不同的变量。- hjpotter92 当我在这里复制代码时,这是一个错误。- user3109875
这个错误才是真正的问题。您正在看到PDO版本中的3被重复,因为它是在mysqli循环之后将您的$counter变量设置为3,并且它永远不会被更新。您需要在PDO循环之前正确地重置它才能看到。
//$count = 0; // Wrong
$counter=0; // Correct.
while($row = $query->fetch(PDO::FETCH_BOTH)){
$counter++;
echo $counter;
echo $row['Name'];
}编辑:
虽然马克·M正确地指出了我忽略的东西,但我仍然认为这是造成这一错误的原因。参见该问题的编辑历史中的此修订版
$count = 0;
while($row = $query->fetch(PDO::FETCH_BOTH)){
$count++;
echo $counter; //This will always remain 3 because you are incrementing $count
echo $row['Name'];
}这恰恰会导致这个答案所暗示的行为。如果这是实际代码,那么这就是实际原因,如果这与实际情况不同,那么这个答案是无效的。
https://stackoverflow.com/questions/25337340
复制相似问题