由于我已经改为PDO,我似乎无法使用正确的函数来完成mysqli_fetch_array()正在做的事情,这可能是因为我不能真正理解mysqli_fetch_array和PDO的fecth之间的真正差异() .
从某些来源,while($ row = mysqli_fetch_array($ query)“每次调用时从结果集中取一行 . ”,而$ row = $ query-> fetch()在一次调用中返回整个结果集 .
我问了两个类似的问题和一个有赏金的问题,但我似乎无法正确地解决我想做的事情 .
-
mysql_fetch_array = fetch(PDO :: FETCH_BOTH) - 行是包含数字索引和命名索引的数组 .
-
mysql_fetch_assoc = fetch(PDO :: FETCH_ASSOC) - 行是具有命名索引的数组 .
-
mysql_fetch_row = fetch(PDO :: FETCH_NUM) - 行是带有数字索引的数组 .
-
mysql_fetch_object = fetch(PDO :: FETCH_OBJ)或fetch(PDO :: FETCH_CLASS),具体取决于您是否为mysql_fetch_object指定了可选的className参数 . 行是对象,可以是指定的类,也可以是stdClass .
-
while循环相当于:
$ data = $ query-> fetchAll(PDO :: FETCH_BOTH),
使用此列表中的第一个似乎与mysqli_fetch_arrray的行为不同 .
我试过的东西在while循环中返回了很多错误并且有时会破坏浏览器,感谢Chrome,我不会发布它 .
HERE's what i want to do .
$counter = 0;
while($row = mysqli_fetch_array($query)){
$counter++;
echo $counter;
echo $row['Name'];
}
如果我们有三行: RESULT ;
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 .
我究竟做错了什么?
1 回答
这是一个非常错误的问题 . 您看到PDO版本中有3个被重复,因此在您的mysqli循环之后将
$counter
变量设置为3,并且它永远不会更新 . 您需要在PDO循环之前正确地重置它才能看到 .Edit:
虽然Mark M正确地指出了我忽略的内容,但我仍然认为这是导致此错误的原因 . 在该问题的编辑历史记录中查看此修订版
这将完全导致这个答案所暗示的行为 . 现在,如果这是实际代码那么这就是实际原因,如果这与实际不同,那么这个答案是无效的 .