PHP Implode in MySQL

Door 15 november 2012Tips & Trucs

In het geval dat je een gegevens vanuit de database in een door komma gescheiden lijst wilt krijgen wordt veelal zoiets gedaan:

<?php
$query = mysql_query("SELECT voornaam FROM gebruikers");
while($row = mysql_fetch_assoc($query){
 $voornamen[] = $row['voornaam'];
}
echo implode(',',$voornamen);
?>

Hier wordt gebruik gemaakt van de implode functie van php. Wat als resultaat oplevert: Piet,Jan,Klaas.

Maar dat kan makkelijker! Middels de GROUP_CONCAT functie van MySQL.

<?php
$query = mysql_query("SELECT GROUP_CONCAT(voornaam) AS voornamen FROM gebruikers");
$row = mysql_fetch_assoc($query);
echo $row['voornamen'];
?>

Misschien niet het beste voorbeeld, gezien het hier niet heel veel scheelt, maar kijk eens naar deze functie:

<?php
function get_video($video_id)
{
 $query = $this->db->query("
 SELECT
 supplier_id,
 title,
 duration,
 date,
 embed,
 (
 SELECT GROUP_CONCAT(category_name)
 FROM categories
 LEFT JOIN video_cat
 ON video_cat.cat_id = categories.category_id
 WHERE video_cat.video_id=".$this->db->escape($video_id)."
 ) AS categories,
 (
 SELECT GROUP_CONCAT(tag_name)
 FROM tags
 LEFT JOIN video_tag
 ON video_tag.tag_id = tags.tag_id
 WHERE video_tag.video_id=".$this->db->escape($video_id)."
 ) AS tags
 FROM videos
 WHERE videos.video_id=".$this->db->escape($video_id)."
 ");
 return $query->result_array();
}
?>
CD / DVD magic
Volgende bericht