我有一个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;
}
提前致谢。
答案 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' );
}