Me gustaría obtener todos los nombres de columnas de una tabla mysql en una matriz en php?
¿Hay alguna consulta para esto?
La mejor manera es usar la base de datos virtual de metadatos INFORMATION_SCHEMA . Específicamente la tabla INFORMATION_SCHEMA.COLUMNS ...
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA`='yourdatabasename'
AND `TABLE_NAME`='yourtablename';
Es MUY poderoso y puede brindarle TONELADAS de información sin necesidad de analizar el texto (como el tipo de columna, si la columna es anulable, el tamaño máximo de la columna, el conjunto de caracteres, etc.) ...
Ah, y es SQL estándar (mientras que SHOW ...
es una extensión específica de MySQL) ...
Para obtener más información sobre la diferencia entre SHOW...
y el uso de las INFORMATION_SCHEMA
tablas, consulte la documentación deINFORMATION_SCHEMA
MySQL en general ...
SET @@SESSION.sql_mode = 'ANSI_QUOTES';
antemano también, pero realmente no me gusta eso. Y no tengo ningún problema con los ticks de retroceso para la delimitación de identificadores. De hecho, yo como ellos mejor que comillas (comillas dobles hace que la sensación equivocada de consulta para mí) ... Para cada uno su propio ...Puede usar la siguiente consulta para MYSQL:
A continuación se muestra el código de ejemplo que muestra cómo implementar la sintaxis anterior en php para enumerar los nombres de las columnas:
Para obtener detalles sobre la salida de la
SHOW COLUMNS FROM TABLE
visita: MySQL Refrence.fuente
DESC TableName;
;-)Parece que hay 2 formas:
o
Más
DESCRIBE
aquí: http://dev.mysql.com/doc/refman/5.0/en/describe.htmlfuente
DESCRIBE
es solo un atajo paraSHOW COLUMNS FROM
.DESC
es aún más corto paraDESCRIBE
!He hecho esto en el pasado.
fuente
Editar : Hoy aprendí la mejor manera de hacer esto. Por favor, consulte la respuesta de ircmaxell.
Analiza la salida de
SHOW COLUMNS FROM table;
Aquí hay más información al respecto aquí: http://dev.mysql.com/doc/refman/5.0/en/show-columns.html
fuente
Use
mysql_fetch_field()
para ver todos los datos de la columna. Ver manual ."Advertencia Esta extensión está en desuso a partir de PHP 5.5.0 y se eliminará en el futuro".
fuente
mysqli_num_fields()
ymysqli_fetch_field_direct()
son los métodos actualizadosUna antigua función PHP "mysql_list_fields ()" está en desuso. Entonces, hoy la mejor forma de obtener nombres de campos es una consulta "MOSTRAR COLUMNAS DE nombre_tabla [COMO 'nombre']". Entonces, aquí hay un pequeño ejemplo:
fuente
fuente
No estoy seguro de si esto es lo que estaba buscando, pero esto funcionó para mí:
Eso devuelve una matriz simple de nombres de columnas / nombres de variables en su tabla o matriz como cadenas, que es lo que necesitaba para generar dinámicamente consultas MySQL. Mi frustración fue que simplemente no sé cómo indexar matrices en PHP muy bien, así que no estaba seguro de qué hacer con los resultados de DESC o SHOW. ¡Espero que mi respuesta sea útil para principiantes como yo!
Para verificar el resultado:
print_r($col_names);
fuente
cuando desee verificar la estructura de todas las tablas con algunos archivados, use este código. En esta consulta selecciono column_name, column_type y table_name para más detalles. Uso order by column_type para poder verlo fácilmente.
Si desea marcar solo el tipo doble archivado, puede hacerlo fácilmente
si desea verificar qué campo permite el tipo nulo, etc., puede usar esto
desea comprobar más, luego este enlace también lo ayudará.
https://dev.mysql.com/doc/refman/5.7/en/columns-table.html
fuente
SHOW COLUMNS en mysql 5.1 (no 5.5) usa una tabla de disco temporal.
Por lo tanto, puede considerarse lento para algunos casos. Al menos, puede aumentar su valor created_tmp_disk_tables . Imagine una tabla de disco temporal por conexión o por cada solicitud de página.
MOSTRAR COLUMNAS no es realmente tan lento, posiblemente porque usa caché del sistema de archivos. Phpmyadmin dice ~ 0.5ms consistentemente. Esto no es nada en comparación con 500ms-1000ms de servir una página de WordPress. Pero aún así, hay veces que importa. Existe una participación del sistema de disco, nunca se sabe lo que sucede cuando el servidor está ocupado, el caché está lleno, el disco duro está bloqueado, etc.
La recuperación de los nombres de columna a través de SELECT * FROM ... LIMIT 1 fue de alrededor de ~ 0.1ms, y también puede usar la caché de consultas.
Así que aquí está mi pequeño código optimizado para obtener nombres de columnas de una tabla, sin usar show columnas si es posible:
Notas:
fuente
Prueba este, yo personalmente lo uso:
fuente
En palabras:
fuente
Esta pregunta es antigua, pero llegué aquí buscando una manera de encontrar una consulta determinada con sus nombres de campo de forma dinámica (no necesariamente solo los campos de una tabla). Y dado que la gente sigue señalando esto como la respuesta para esa tarea dada en otras preguntas relacionadas, comparto la forma en que descubrí que se puede hacer, usando los consejos de Gavin Simpson:
Esto se puede modificar fácilmente para insertar los nombres de campo en una matriz.
Usando un simple:
$sql="SELECT * FROM myTable LIMIT 1"
puede darle los campos de cualquier tabla, sin necesidad de usarSHOW COLUMNS
o ningún módulo php adicional, si es necesario (eliminando la parte de volcado de datos).Esperemos que esto ayude a alguien más.
fuente
si usas php, usa esta esencia .
puede obtener información completa de campos seleccionados sin resultado, y todos los campos personalizados como:
si arriba de sql no devuelve datos, también obtendrá los nombres de campo aname, bname, otro nombre de campo de b
solo dos líneas:
fuente
Esta consulta obtiene una lista de todas las columnas de una base de datos sin tener que especificar un nombre de tabla. Devuelve una lista de solo nombres de columna:
Sin embargo, cuando ejecuté esta consulta en phpmyadmin, mostró una serie de errores. No obstante, funcionó. Así que úsalo con precaución.
fuente
La solución más simple de todas las respuestas:
o
o
fuente
si solo necesita los nombres y tipos de campo (quizás para copiar y pegar fácilmente en Excel):
eliminar
si quieres todos los tipos de datos
fuente
No soy un experto, pero esto funciona para mí.
fuente
He intentado esta consulta en SQL Server y esto funcionó para mí:
fuente