PDO提取返回空的第一行

时间:2017-06-24 07:34:11

标签: php sql pdo

我正在尝试将PDO查询中的数据存储到数组中,如下所示。

$array[] = array();
$query = "SELECT m.fac_id, m.tnc_id FROM `CCF` m
        INNER JOIN `CCF-1` f ON f.fac_id = m.fac_id
        WHERE f.form_id = :id";
$stmt = $con->prepare($query);
$stmt->execute(array('id' => $ccf_id));

if ($stmt->rowCount() > 0) {
    while ($obj = $stmt->fetch(PDO::FETCH_ASSOC)) {
            $array[] = [$obj['tnc_id'], $obj['fac_id']];
    }
    return $array;
} else {
    return null;
}

有两个问题:

1)如果表为空,则使用$stmt->fetch()而不先检查$stmt->rowCount() > 0是否返回空数组元素,即[[]],当我需要的是[]或一个空数组。

2)因此我添加了一个if语句$stmt->rowCount() > 0,以便空表返回[],这有效。但是,现在非空表将具有空的第一个值,即[[],[1,2],[3,4]...],这会混淆我代码的后半部分。

如何确保输出为[][[1,2],[3,4]...]

1 个答案:

答案 0 :(得分:2)

更改

$array[] = array();

$array = array();

[]之后的$array表示$array将是一个数组,并且存在的第一个索引(通过[]创建)将是array()