PHP为什么数组正在保存额外的行

时间:2018-03-06 13:22:59

标签: php mysql arrays database pdo

在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行是空的。

1 个答案:

答案 0 :(得分: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;
}