自从我改用 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,我不会发布它。
这是我想做的。
$counter = 0;
while($row = mysqli_fetch_array($query)){
$counter++;
echo $counter;
echo $row['Name'];
}
如果我们有三行:RESULT;
1
TRIQUESHA
2
STACEY
3
DAQUEN
现在是 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 行。
我做错了什么?
最佳答案
$count and $counter are different variables. – hjpotter92
That's a typo when i was reproducing the code here. – 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'];
}
这将准确地导致此答案所暗示的行为。现在,如果这是实际代码,那么这就是实际原因,如果这与实际情况不同,则此答案无效。
关于php - PDO 中 mysqli_fetch_array 函数的确切等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25337340/