PHP desde base de datos y consulta

Tengo una mesa:

id, afiliado

Cada vez que alguien hace clic en un enlace, se inserta una nueva fila,

ID es el ID de la página y afiliado es el ID del afiliado.

Por ejemplo:

ID de página: 9 ID de afiliado: 1

ID de página: 9 ID de afiliado: 2

ID de página: 9 ID de afiliado: 3

Solo tengo 3 afiliados.

Quiero seleccionar esta información y agruparlos por afiliado, para la identificación.

He probado esta consulta:

SELECCIONE EL CONTEO (*) DE table DÓNDE id = '9' AGRUPAR POR affiliate

Funciona bien cuando lo hago en php mi administrador, ¿cómo obtengo la información en PHP?

Yo he tratado:

$ q = mysql_query ("SELECCIONAR CONTAR (*) DESDE table DÓNDE id = '". $ id."' AGRUPAR POR affiliate");

$ r = mysql_fetch_array ($ q);

Cuando intento imprimir los datos en la página, solo obtengo un resultado.

¿Necesito usar un bucle foreach / while para obtener los 3? ¿Cómo haría yo para hacer esto?

¡Gracias!

preguntado el 09 de enero de 11 a las 11:01

¿Le pide una solución foreach / while pero no quiere un bucle de acuerdo con sus comentarios? Estoy confundido... -

4 Respuestas

Deberías hacer mysql_fetch_array () (o mysql_fetch_assoc ()) en un bucle:

while ($row = mysql_fetch_assoc($q)) {
    echo $row["id"];
    echo $row["affiliate"];
}

ACTUALIZACIÓN (de acuerdo con el comentario):

Si SIEMPRE tiene 3 filas en su resultado, probablemente mysql_result () la función sería útil:

$firstAffiliate = mysql_result($q, 0, "affiliate");
$secondAffiliate = mysql_result($q, 1, "affiliate");
$thirdAffiliate = mysql_result($q, 2, "affiliate");

Por cierto, tenga cuidado y compruebe si la consulta realmente devuelve 3 resultados.

Respondido el 09 de enero de 11 a las 14:01

Sin embargo, no quiero hacer un bucle dentro de mi contenido, básicamente quiero definir 3 variables que puedo llamar más abajo en la página, sin tener que colocar mi contenido en un bucle while. - Latox

Respuesta actualizada para el caso, cuando solo tiene 3 filas - Kel

@Kyle: Se necesita un bucle ya que la consulta devuelve 3 filas. Discutir en contra es una tontería Y una mala práctica usar mysql_result (). - Kim

Bucle como este:

while ($ fila = mysql_fetch_array ($ q)) {print_r ($ fila); }

Respondido el 09 de enero de 11 a las 14:01

Sin embargo, no quiero hacer un bucle dentro de mi contenido, básicamente quiero definir 3 variables que puedo llamar más abajo en la página, sin tener que colocar mi contenido en un bucle while. - Latox

Si solo desea obtener una lista de Affiliate ID, puedes considerar esta consulta

select group_concat(affiliate)
from table 
where id=9;

Lo anterior devolverá un valor separado por comas como 1,2,3 en una sola fila

Entonces, puede explotar en PHP usando ,, y el tamaño de la matriz explosionada es el mismo que count(*)

Respondido el 09 de enero de 11 a las 16:01

puede usar una variable para mantener el estado dentro de la propia declaración mysql. Intente lo siguiente:

afiliados: page_id afil_id

set @ page_id = 0; seleccione page_id, if (@page_id <> page_id, count (*), 0), @page_id: = page_id del grupo de clics por page_id;

Espero que ayude

Respondido el 09 de enero de 11 a las 20:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.