我正在尝试将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]...]
?
答案 0 :(得分:2)
更改
$array[] = array();
到
$array = array();
[]
之后的$array
表示$array
将是一个数组,并且存在的第一个索引(通过[]
创建)将是array()