使用PDO fetchAll选择数组内的mysql数据

时间:2012-06-21 03:50:58

标签: php mysql arrays json pdo

我正在尝试使用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);  
}

我的评论输出了我数据库中的所有列。如果我只想要评论,时间,身份等等,我将如何在这种语法中区分它?

提前致谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

更改行

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

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

编辑:

或者在单个SQL查询中使用group_concat(注释时间id,',')。您可以将此作为单个“JOIN”ed查询执行,如果可以获得所需的分隔符,则可以对注释进行group_concat。然后一切都是SQL-side =更快。

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