由于我已经改为PDO,我似乎无法使用正确的函数来完成mysqli_fetch_array()正在做的事情,这可能是因为我不认真理解mysqli_fetch_array和PDO的fecth()之间真正的差异。
从某些来源,while($ 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
NOW PDO
$count = 0;
while($row = $query->fetch(PDO::FETCH_BOTH)){
$counter++;
echo $counter;
echo $row['Name'];
}
如果我们有三行: PDO RESULT ;
3
TRIQUESHA
3
STACEY
3
DAQUEN
它没有计算,它返回总行数,如果我有50行,它会在每行重复50行。
我做错了什么?
答案 0 :(得分:3)
$ count和$ counter是不同的变量。 - hjpotter92
当我在这里复制代码时,这是一个错字。 - user3109875
这非常错字是真正的问题。你看到PDO版本中的3个被重复导致你的$counter
变量在你的mysqli循环之后被设置为3,并且它永远不会被更新。您需要在PDO循环之前正确地重置它才能看到。
//$count = 0; // Wrong
$counter=0; // Correct.
while($row = $query->fetch(PDO::FETCH_BOTH)){
$counter++;
echo $counter;
echo $row['Name'];
}
修改强>
虽然Mark 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'];
}
这将完全导致此答案所暗示的行为。现在,如果这是实际的代码,那么这是真正的原因,如果它与实际的不同,那么这个答案是无效的。