首页 文章

PDO中mysqli_fetch_array函数的确切等价物是什么?

提问于
浏览
1

由于我已经改为PDO,我似乎无法使用正确的函数来完成mysqli_fetch_array()正在做的事情,这可能是因为我不能真正理解mysqli_fetch_array和PDO的fecth之间的真正差异() .

从某些来源,while($ 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,我不会发布它 .

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 回答

  • 3

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

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

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

    Edit:

    虽然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'];
    }
    

    这将完全导致这个答案所暗示的行为 . 现在,如果这是实际代码那么这就是实际原因,如果这与实际不同,那么这个答案是无效的 .

相关问题