2012-06-21 32 views
-1

我试图从fetchAll从MySQL获取某些数据。选择数组中的数据与PDO fetchAll

目前,我有这样的:

$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等等,我该怎么区分这个语法?

在此先感谢!

+0

而不是“*”在查询中写入列名。 – itachi

回答

1

查询SQL数据库时,SELECT语句还应该包含要返回的列的列表。这不仅节省时间,因为SQL数据库不必检索每个查询的列列表,但它需要您考虑需要的内容。在你的情况,如果你只是想:commentstimeid那么你应该指定:

$comments= $dbh->prepare("SELECT id, time FROM comments WHERE idinformation= ?"); 
1

更改线路

$comments= $dbh->prepare("SELECT * FROM comments WHERE idinformation= ?"); 

$comments= $dbh->prepare("SELECT comments,time,id FROM comments WHERE idinformation= ?"); 

编辑:

或者在单个SQL查询中使用group_concat(comments time id,',')。您可以将其作为单个“JOIN”编辑查询来完成,如果可以获得所需的分隔符,则可以对该注释进行group_concat注释。一切都完成了SQL端=更快。

文档:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat