PHP为什么数组正在保存额外的行[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

在sqlqry.php中

function procat(){
    require_once("..\db.php");

    $procat = $DBH->prepare("SELECT pro_sr FROM products LEFT JOIN 
    categories ON products.pro_cat=categories.cat_sr");
    $procat->execute();
    while($rowprocat[]=$procat->fetch()) {}
    return $rowprocat;
}

in products.php

<?php 
    $rowprocat=procat(); 
    print_r($rowprocat); 
?>

Array ( [0] => Array ( [pro_sr] => 60 [0] => 60 ) [1] => Array ( [pro_sr] => 61 [0] => 61 ) [2] => Array ( [pro_sr] => 62 [0] => 62 ) [3] => )

为什么它显示4行,而实际上它有3个记录。也在phpMyAdmin中测试过3.第4行是空的。

php mysql arrays database pdo
1个回答
0
投票

因为您要将$procat->fetch()的返回值分配给数组,无论是否有结果。

这就是为什么大多数人在PHP中使用临时变量的原因:

function procat(){
    require_once("..\db.php");

    $procat = $DBH->prepare("SELECT pro_sr FROM products LEFT JOIN 
    categories ON products.pro_cat=categories.cat_sr");
    $procat->execute();
    while($row = $procat->fetch()) {
        $rowprocat[] = $row;
    }
    return $rowprocat;
}
© www.soinside.com 2019 - 2024. All rights reserved.