我需要提取数据库中与某个user_id相关的所有条目,在它们输入数据库的时候(这是php unix time()秒)对它们进行排序,然后按姓氏对它们进行分组,以便他们坐着同姓的人。
这是到目前为止的查询..虽然它只给了我一定数量的条目。
$sql = "SELECT * FROM people WHERE user_token='$user_token'
ORDER BY time GROUP BY surname";
使用ORDER和GROUP by的正确方法是什么,以便将所有结果按姓氏分组,但按输入的时间排序?感谢。
答案 0 :(得分:3)
您的SQL,语法,SQL注入漏洞出错,可能您使用的是过时的数据库扩展。所以,这应该是它应该是什么样的:
$dsn = "mysql:dbname=$db_name;host=$db_host";
try{
$pdo = new PDO($dsn, $username, $password);
}
catch(PDOException $e){
die($e->getMessage());
}
$sql = "SELECT surname, count(id) FROM people WHERE user_token=:usr_token ORDER BY time GROUP BY surname";
$stmt = $pdo->prepare($sql);
if ($stmt->execute(array(':usr_token'=>$user_token))){
$result = $stmt->fetchAll();
}
else{
print_r($stmt->errorInfo());
die("Error executing query");
}
有关详细信息,请参阅PDO manual
答案 1 :(得分:0)
ORDER BY
子句应该是最后一个,但您必须指定要聚合的字段。
如:
SELECT surname, count(*)
FROM people
WHERE user_token='$user_token'
GROUP BY surname
ORDER BY surname