首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqli_fetch_array函数在PDO中的确切等价性是什么?

问mysqli_fetch_array函数在PDO中的确切等价性是什么?
EN

Stack Overflow用户
提问于 2014-08-16 05:50:05
回答 1查看 9K关注 0票数 1

由于我已经更改为PDO,所以我真的无法得到正确的函数来使用它来完成mysqli_fetch_array()所做的事情,这可能是因为我不太了解mysqli_fetch_array和PDO的fecth()之间的真正区别。

当( $row = mysqli_fetch_array($query) )“每次调用结果集时从结果集中获取一行”时,$row= $query->fetch()在一个调用中返回整个结果集。

我问了两个类似的问题,一个是有赏金的,但我似乎找不到合适的方法来解决我想做的事情。

,From this question,

  • 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,我不会发布这些错误。

,这是我想做的,。

代码语言:javascript
复制
$counter = 0;    
while($row = mysqli_fetch_array($query)){
   $counter++;
    echo $counter;
    echo $row['Name'];
}

如果我们有三行:结果;

代码语言:javascript
复制
1
TRIQUESHA

2
STACEY

3
DAQUEN

现在PDO

代码语言:javascript
复制
$count = 0;
while($row = $query->fetch(PDO::FETCH_BOTH)){
$counter++;
    echo $counter;
    echo $row['Name'];
}

同样,如果我们有三行:PDO结果;

代码语言:javascript
复制
3
TRIQUESHA

3
STACEY

3
DAQUEN

它没有计数,而是返回总行数,如果我有50行,它将在每一行上重复50行。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-16 06:02:14

$count和$counter是不同的变量。- hjpotter92 当我在这里复制代码时,这是一个错误。- user3109875

这个错误才是真正的问题。您正在看到PDO版本中的3被重复,因为它是在mysqli循环之后将您的$counter变量设置为3,并且它永远不会被更新。您需要在PDO循环之前正确地重置它才能看到。

代码语言:javascript
复制
//$count = 0;   // Wrong
$counter=0;    //  Correct. 
while($row = $query->fetch(PDO::FETCH_BOTH)){
    $counter++; 
    echo $counter;
    echo $row['Name'];
}

编辑:

虽然马克·M正确地指出了我忽略的东西,但我仍然认为这是造成这一错误的原因。参见该问题的编辑历史中的此修订版

代码语言:javascript
复制
$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'];
}

这恰恰会导致这个答案所暗示的行为。如果这是实际代码,那么这就是实际原因,如果这与实际情况不同,那么这个答案是无效的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25337340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档