Como sacar el nombre de los campos en una tabla MySQL

by manelgarcia on July 30, 2009

in PHP

Creo que soy de los que cuando se ponen a programar, pueden hace crlo mucho rato, muy bien y casi perfecto, pero cuando se encuentran algo que no tienen en mente de cómo hacer se estancan horas y horas…

El otro día me pasó algo parecido cuando estaba programando la calculadora de precios para la web de chapas publicitarias, butonet. Necesitaba sacar con PHP los nombres de los campos de una tabla MySQL.

Y después de (bastante) rato buscando, mirando y toqueteando me acabé creando una función que soluciona el problema. Aquí os la dejo por si a alguien le interesa.


function mysql_nombres_campos($tabla,$link) {
$query = "SELECT * FROM {$tabla}";
$resultado = mysql_query($query,$link);
$fila = mysql_fetch_assoc($resultado);
$columnas = array_keys($fila);
return $columnas;
}

{ 7 comments… read them below or add one }

claudio August 2, 2009 at 5:05 am

Tu función resuelve el problema, pero está muy mal programada. Deberías revisarla y hacer menos artesanal.

slds.-

manelgarcia August 5, 2009 at 8:30 pm

Cómo crees que podría ser menos artesanal?

Gracias por la respuesta.

plac3vo August 20, 2009 at 7:24 pm

$query=SHOW COLUMNS {tabla}; Esto no es mas sencillo? Tiene problemas de rendimiento o es inseguro? yo lo suelo usar mucho cuando hago inserts en tablas y quiero reutilizar codigo.

Oscar April 10, 2011 at 9:13 pm

Manel,

Gracias por la función.

Saludos.

carolina April 17, 2012 at 6:20 pm

yo lo hice asi por que estoy mostrando la tabla en un pdf
con mysql_num_fieds(tu consulta, num de campo) obtienes el total de campos y los lees atraves del for e imprimes

//mostrar nombre del campo de la tabla en mysql
for($i=0;$ipdf->SetFont(‘Arial’,'I’,8);
$this->pdf->Cell(30,10,mysql_field_name($sql,$i),1,0,l);

}

carolina April 17, 2012 at 6:22 pm

te paso toda la funcion de como imprimir tabla con resultados espero sirva

//funcion para crear para tabla del pdf
public function tablaPdf($sql)

{

//mostrar nombre del campo de la tabla en mysql
for($i=0;$ipdf->SetTextColor(0);
// Asignar tipo de fuente Arial bold 15
$this->pdf->SetFont(‘Arial’,'I’,8);
$this->pdf->Cell(30,10,mysql_field_name($sql,$i),1,0,l);

}

while($resultado=mysql_fetch_array($sql)) {

//salto de linea
$this->pdf->Ln();
// Asignar tipo de fuente Arial bold 15
$this->pdf->SetFont(‘Arial’,'I’,8);
//mostrar datos de la tabla

//$this->pdf->Cell(30,10,$resultado['idUsuario'],1);
$this->pdf->Cell(30,10,$resultado[
],1);
$this->pdf->Cell(30,10,$resultado['nombreCompleto'],1);
$this->pdf->Cell(30,10,$resultado['usuario'],1);
$this->pdf->Cell(30,10,$resultado['perfil'],1);
$this->pdf->Cell(30,10,$resultado['nivel'],1);
$this->pdf->Cell(30,10,$resultado['password'],1);
//salto de linea

}

//SALTO DE linea
$this->pdf->Ln();
}

carolina April 17, 2012 at 6:24 pm

//se pego mal la parte del for la correcta es y lo k le sigue al codigo
for($i=0;$i<mysql_num_fields($sql);$i++){

Leave a Comment

Previous post:

Next post: