Claro que la estás errando, ¿si sabes lo que hace implode() exactamente?
Dicha función sirve para unir valores de un array mediante un separador:
Código PHP:
Ver original// MAL
while (/* ... */) {
}
// BIEN
while (/* ... */) {
$foo []= 'bar';
}
echo implode(', ', $foo); // bar, bar, bar
¿Se entiende?
Ahora, tu necesitas imprimir una serie de valores separados por un guión entonces implode() es exactamente lo que necesitas, pero hay un inconveniente: al parecer no sabes usar arrays.
Ese es el más grave de tus problemas, puedes usar las funciones incorrectas todo el tiempo que quieras, si no comprendes lo que tienes que hacer ni lees el manual de las funciones que usas, ¿cómo sabes que las estás usando correctamente?
El que trabajes con datos de la BD es lo más trivial del asunto, el hecho es que ni siquiera sabes trabajar correctamente con variables de tipo array + strings.
La clave consiste en no imprimir los valores, sino acumularlos en un array para después, al final del ciclo, imprimirlos usando implode().
Pon atención en eso.