-1

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 などだけが必要な場合はどうすればよいでしょうか。この構文でこれをどのように区別しますか?

前もって感謝します!

4

2 に答える 2

1

SQL データベースにクエリを実行する場合、SELECTステートメントには、返される列のリストも含める必要があります。これは、SQL データベースがクエリごとに列のリストを取得する必要がないため、時間を節約できるだけでなく、何が必要かを考える必要があります。あなたの場合、 , のみが必要な場合は、commentsそれを指定する必要があります:timeid

$comments= $dbh->prepare("SELECT id, time FROM comments WHERE idinformation= ?");
于 2012-06-21T04:12:55.703 に答える
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

于 2012-06-21T04:13:15.250 に答える