Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Obtener nombres de campos en la misma sentencia

Estas en el tema de Obtener nombres de campos en la misma sentencia en el foro de PHP en Foros del Web. Hola, Estoy haciendo una especie de interfaz para ejecutar sentencias sql y mostrar los resultados. Lo que necesito es poder extraer los nombres de los ...
  #1 (permalink)  
Antiguo 18/07/2016, 12:57
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Obtener nombres de campos en la misma sentencia

Hola,

Estoy haciendo una especie de interfaz para ejecutar sentencias sql y mostrar los resultados. Lo que necesito es poder extraer los nombres de los campos a la misma vez que ejecuto la sentencia.

Sé que, por ejemplo, simplemente con DESCRIBE tabla saco los campos, pero necesito que se haga en la misma sentencia SELECT.

Juraría haberlo visto en algún sitio pero apenas recuerdo cómo era y tampoco consigo encontrarlo por San Google. Alguien que me eche una mano?? GRACIAS!!
  #2 (permalink)  
Antiguo 18/07/2016, 13:12
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Obtener nombres de campos en la misma sentencia

No existe algo asi, ni tampoco se necesita, ya que los lenguajes de programación acceden a esos nombres al mismo tiempo que los datos.
Por caso, cuando lo haces por medio de PHP, los nombres de los campos o columnas consultados son devueltos como nombres de las claves del array asociativo. En C#.net o VB.Net, los ColumnName de cada data set se corresponden con los nombres de las columnas consultadas
Dado esto, no se entiende tu problema... Simplemnete vienen con la respuesta de la base.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 18/07/2016, 13:43
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: Obtener nombres de campos en la misma sentencia

Pues no había caído, pero de todas formas no sé cómo sacarlo.

Utilizo mysqli_fetch_array para extraer los datos, ya que no puedo utilizar mysqli_fetch_assoc por que nunca podré saber los campos que se solicitan si son todos (*), cómo puedo acceder al nombre del campo entonces??
  #4 (permalink)  
Antiguo 18/07/2016, 14:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Obtener nombres de campos en la misma sentencia

Bueno, eso ya es un tema de programación, por lo que es OFF TOPIC en los foros de BBDD.
Muevo el tema al foro de PHP, donde corresponde.

Por cierto, cuando tuve que hacer lo mismo que tu, simplemente investigué en las diferentes funciones de MYSQLI que aparecen en el manual de referencia de PHP para esa librería...

Otro detalle: ¿por qué dices que "ya que no puedo utilizar mysqli_fetch_assoc "?
El hecho de que no sepas de antemano cuales son las columnas no impide conocer sus nombres. Siempre estarán regresando en la consulta, simplemente recorres las columnas tomando el nombre...

No le veo tanta dificultad.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 18/07/2016, 15:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Obtener nombres de campos en la misma sentencia

Cita:
Sé que, por ejemplo, simplemente con DESCRIBE tabla saco los campos, pero necesito que se haga en la misma sentencia SELECT.
Es muy simple, sólo debes usar array_keys() con el resultado de la consulta, si tienes un array asociativo te devolverá la lista de claves de dicho array: y esas serían las columnas.

Consulta el manual, nada cuesta.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 25/07/2016, 13:39
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: Obtener nombres de campos en la misma sentencia

Pues tengo problemas, con lo fácil que es pero no veo ejemplos por internet claros... el primer soprendido soy yo...

Al final lo he hecho así:
$qry=mysqli_query($link,"select....");
$tabla=mysqli_fetch_assoc($qry);
$columnas=(array_keys($tabla));

y con un foreach saco las columnas

Pero, ¿realmente tengo que ejecutar la sentencia para poder hacerle el array_keys? Si cojo $tabla y me pongo a extraer registros siempre se come el primer registro al pasarle el array_keys()... Será muy obvio pero yo no lo veo...



Y también me gustaría saber si puedo obtener a la vez que todo esto el tipo de campo que es, sin tener que utilizar mysqli_field_type($qry).
  #7 (permalink)  
Antiguo 28/07/2016, 06:45
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: Obtener nombres de campos en la misma sentencia

Alguien me puede ayudar? No sé por qué pone que está SOLUCIONADO
  #8 (permalink)  
Antiguo 28/07/2016, 08:03
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Obtener nombres de campos en la misma sentencia

Mi estimado lee el manual tienes muchas funciones utiles que te pueden servir como esta http://php.net/manual/en/mysqli-result.fetch-fields.php

El problema que reportas es simple pero no te das cuenta porque no lees el manual o no haces pruebas.
cada vez que llamas a $tabla=mysqli_fetch_assoc($qry); sacas un registro del result set y es por eso que "pierdes" el primer registro.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: bases-de-datos-general, campos, nombres, select, sentencia, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:26.