2012-06-21 66 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