我正在尝试使用 fetchAll 从 mysql 获取某些数据。
我目前有这个:
$sql1= $dbh->query("SELECT * FROM information");
$comments= $dbh->prepare("SELECT * FROM comments WHERE idinformation= ?");
if($retail){
while($row = $retail -> fetch(PDO::FETCH_ASSOC)){
$comments->execute(array($row['idproducts']));
$json['data'][] = array(
'id'=>$row['idproducts'],
"headline"=>$row['headline'],
'price'=> array ("full_price" => $row['full_price']),
'description'=>$row['description'],
"comments" => $comments->fetchAll(PDO::FETCH_ASSOC)
);
}
$json_encode = json_encode($json);
$obj = json_decode($json_encode,true);
}
我的注释输出数据库中的所有列。如果我只想要评论,时间,ID等怎么办...在此语法中,我将如何区分这一点?
提前感谢!
查询 SQL 数据库时,SELECT
语句还应包含要返回的列的列表。这不仅可以节省时间,因为 SQL 数据库不必检索每个查询的列列表,而且还需要您考虑所需的内容。在您的情况下,如果您只需要:comments
、time
、id
,则应指定它:
$comments= $dbh->prepare("SELECT id, time FROM comments WHERE idinformation= ?");
更改行
$comments= $dbh->prepare("SELECT * FROM comments WHERE idinformation= ?");
自
$comments= $dbh->prepare("SELECT comments,time,id FROM comments WHERE idinformation= ?");
编辑:
或者,在单个 SQL 查询中使用 group_concat(注释时间 id, ', ')。您可以将其作为单个"JOIN"查询来执行,如果可以获得所需的分隔符,则可以group_concat注释。然后一切都在 SQL 端 = 更快完成。
文档:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat