我有一个这样的函数来从数据库中获取用户:
Gst.Element.query_duration()
这将返回如下数组:
function getUsers(){
$db = db::getInstance();
$res = $db->prepare("
SELECT *
FROM `users`
ORDER BY `points` DESC
");
$res->execute();
if($res->rowCount()==0){
return null;
}
return $res->fetchAll();
}
有一种简单的方法可以使用其中一个字段作为密钥吗?在这个例子中,我可能希望字段Array(
0 => {id => 555, name => Smith, firstname => William, points => 123}
1 => {id => 213, name => Hitchcock, firstname => Alfred, points => 95}
2 => {id => 999, name => James, firstname => Kevin, points => 66}
)
用作数组键,所以我希望得到这个结果:
id
我可以通过手动创建一个新的结果数组来实现这一点:
Array(
555 => {id => 555, name => Smith, firstname => William, points => 123}
213 => {id => 213, name => Hitchcock, firstname => Alfred, points => 95}
999 => {id => 999, name => James, firstname => Kevin, points => 66}
)
PHP或PDO是否为此提供了内置解决方案?我试图尽可能降低复杂性(如在速度/内存使用方面)。
答案 0 :(得分:1)
您可以使用获取模式PDO::FETCH_UNIQUE
:
return $res->fetchAll(PDO::FETCH_UNIQUE);
请注意,这将使用SELECT中的第一列作为数组索引,并从该行中删除该列。如果您想保留该列(id
),则需要选择它两次:
function getUsers(){
$db = db::getInstance();
$res = $db->query("
SELECT u.id as unique_key, u.*
FROM `users` u
ORDER BY `points` DESC
");
if($res->rowCount()==0){
return null;
}
return $res->fetchAll(PDO::FETCH_UNIQUE);
}