2011-08-11 55 views
3

我有一個mysql語句,會產生一堆結果。我想用除逗號以外的逗號分隔每個結果。我在想,我需要一個for循環,但我不太清楚如何去做。我應該如何獲得我的結果作爲一個數組,並通過它們循環?我在想,我應該計算行數,然後當達到最後的結果時,它不使用逗號。將MySQL結果轉換爲逗號分隔值

我很習慣只用while得到結果,我是一個noob使用。我將不勝感激任何建議。

顯然不會工作,因爲最後的結果會有一個逗號。

$sql = 'SELECT * FROM tags WHERE vid_id=?'; 
$stmt_tags = $conn->prepare($sql); 
$result=$stmt_tags->execute(array($vid_id)); 
$tag_count=$stmt_tags->rowCount(); 
while ($row = $stmt_tags->fetch(PDO::FETCH_ASSOC)) { 

    $tags=htmlspecialchars($row['name'], ENT_NOQUOTES, 'UTF-8'); 
    $tags=$tags.','; 
    echo $tags; 

} 

在此先感謝。

回答

10
$tags = array(); 
while ($row = $stmt_tags->fetch(PDO::FETCH_ASSOC)) { 
    $tags[] =htmlspecialchars($row['name'], ENT_NOQUOTES, 'UTF-8'); 
} 
echo implode(',', $tags); 
+0

OMG我忘記了內爆大聲笑。非常感謝KingCrunch。 – Scarface

5

將它們全部放入臨時陣列並使用implode()

implode(',',$array); 
3
$alldata = $stmt_tags->fetchAll(PDO::FETCH_ASSOC); 
$tags = implode(',' array_map(function($row){ 
    htmlspecialchars($row['name'], ENT_NOQUOTES, 'UTF-8'); 
},$alldata)); 
+0

我喜歡匿名函數:) – KingCrunch

1

而且沒有破滅() - 用於completeness-只是前加逗號;它比第一行更容易分辨第一行:

<?php 

$tags = ''; 
$first = TRUE; 
while ($row = $stmt_tags->fetch(PDO::FETCH_ASSOC)) { 
    if($first){ 
     $first = FALSE; 
    }else{ 
     $tags .= ', '; 

    } 
    $tags .= htmlspecialchars($row['name'], ENT_NOQUOTES, 'UTF-8'); 
}