将MySQL结果转换为逗号分隔值

时间:2011-08-11 18:23:43

标签: php mysql

我有一个mysql语句会产生一堆结果。我想用逗号分割每个结果,除了最后的结果。我在想我需要一个for循环,但我不太清楚如何去做。我应该将结果作为数组并循环遍历吗?我在想我应该计算行数,然后当for到达最后一个结果时它不会使用逗号。

我已经习惯了用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;

}

提前致谢。

4 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:5)

将它们全部放入临时数组并使用 implode()

implode(',',$array);

答案 2 :(得分:3)

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

答案 3 :(得分:1)

没有implode() - 完整性 - 只需在之前添加逗号;告诉第一行比最后一行更容易:

<?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' );
}