【发布时间】:2014-11-05 17:51:46
【问题描述】:
我相信我完全错误地使用了 PDO 提取功能。这是我想要做的:
查询一行,获取结果,使用辅助函数将结果处理成数组。
查询
function userName($db){
$q = $db->prepare("SELECT id, name FROM users WHERE id = :user");
$q->bindParam(":user", $user);
$q->execute();
$qr = $q->fetchAll(PDO::FETCH_ASSOC);
if ($qr->rowCount() > 0){
foreach($qr as $row){
$names[$row['id']] = buildArray($row);
}
return $names;
}
}
我的自定义数组构建函数
function buildArray($row){
$usernames = array();
if(isset($row['id'])) $usernames['id'] = $row['id'];
if(isset($row['name'])) $usernames['name'] = $row['name'];
}
我实际上得到了我想要的,但是当我在中间回显时,我看到事情循环了 3 次而不是一次。我想我在滥用 fetchAll。
任何帮助表示赞赏
【问题讨论】:
-
你提取了多少条目?你在哪里
echo? -
buildArray()没有return声明 -
循环3次是什么意思?唯一的循环是
foreach($qr as $row)。您在哪里看到其他循环? -
想想你,而不是愚蠢的电脑必须做的事情。你会怎么做?
-
@DOCSAREL 如果我在 If 语句中回显,我会看到 2 个回显(假装我有两个相似的 ID)。如果我在 foreach 中回显,我会看到 6 个回显。所以 2x3=6 出于某种原因,循环发生了 3 次。也请不要担心这里的小事,我写的是一个例子。