【发布时间】:2014-10-09 20:00:42
【问题描述】:
自从我更改为 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_array 的行为不同。
我尝试过的方法在 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。
我做错了什么?
【问题讨论】:
-
3的问题是重复的吗?
-
它不计数,它返回总行数,如果我有 50 行,它将在每行重复 50。
-
$count和$counter是不同的变量。 -
我在这里复制代码时打错了。
-
你仍然错过了一个实例。