18 09

MySQL + PHP: Recuperar valores de un campo ENUM

Publicado por Yoné Rocha en Diseño Web, MySQL, PHP

Entre los distintos tipos de datos que puede manejar MySQL se encuentran las enumeraciones, definidas con la palabra clave enum. Una lista de enumeradores, como se denomina un enum, no es más que un conjunto de constantes con nombre que definimos en la estructura de nuestra base de datos.

Si has usado un enum en un campo de una tabla, seguro que has querido extraer todos los valores que componen la lista de enumeradores y, posiblemente, no has sabido como hacerlo. He aquí la solución usando PHP:

//Asumo que ya estamos conectados a la base de datos
//Consultamos todos los posibles valores de la columna ENUM
$consulta = $this->db->prepare('SHOW COLUMNS FROM nombreTabla LIKE "nombreCampoEnum"');
$consulta->execute();
//Obtenemos los resultados de la consulta
$array = $consulta->fetch(PDO::FETCH_ASSOC);
//expresión regular que obtiene los valores de enum
$array = explode("','",preg_replace("/(enum|set)\('(.+?)'\)/","\",$array['Type']));
print_r($array);

La clave de todo está en la línea en que llamamos a la función explode(). Mediante una expresión regular analizamos la variable $array y extraemos los valores del enum.

P.D: Para los más despistados... Uso para la consulta a la base de datos PHP Data Objects.

 

 

Puntuación: 3.4/10 (7 votos emitidos)

  • Imprimir
  • Facebook
  • Twitter
  • Del.icio.us
  • Technorati
  • Digg
  • Menéame

Dirección trackback para este artículo:
http://promineostudios.com/blog/articulo/mysql-php-recuperar-valores-de-un-campo-enum/trackback

Conozca los últimos comentarios de éste artículo agregando el feed RSS a su lector de noticias

Artículos Relacionados
Ir al formulario
4

lo he resuelto de otra manera:
$sql="SHOW COLUMNS FROM tabla";
$result=mysql_query($sql);

//recupero los valores del campo que necesito que es de tipo enum. en mi caso es 'ciudad'.

while($row=mysql_fetch_array($result))
{
if($row[0]=='ciudad')
$ciudad=$row;
}

$valores = $ciudad[1];
$valores = ereg_replace("enum", "", $valores);
$valores = ereg_replace("\(", "", $valores);
$valores = ereg_replace("\)", "", $valores);
$valores = ereg_replace("\'", "", $valores);
$ciudad = explode(",", $valores);

//Para comprobar imprimimos el array
print_r($ciudad);

Enlace Permanente | 6 de mayo del 2010 a las 20:04 - Gonzo ha dicho

Hola Gonzo! podrías unificar todos esos ereg_replace

Enlace Permanente | 6 de mayo del 2010 a las 22:38 - yoné ha dicho

en la barra lateral, el boton de facebook dice "Hazte Fan en Facebbok" con doble "b" en ves de doble "o"



...


Enlace Permanente | 30 de mayo del 2010 a las 19:53 - matias ha dicho

Cierto, ya lo hemos arreglado. Muchas Gracias.

PD: Tenemos que arreglar las comillas de los comentarios que las estamos filtrando mal y muestran su equivalente HTML.

Enlace Permanente | 31 de mayo del 2010 a las 11:48 - yoné ha dicho

Escribe un comentario sobre este artículo

:) :D XD :( :-o 8O :-? 8) :-x :p :-| ;-) :oops: :cry: :evil: :roll: :!: :?: :idea: :arrow: :mrgreen:

  • bloglines
  • Google
  • Netvibes
  • MyYahoo
  • MyMsn
Artículos Destacados
Autores
Categorías
Archivo

2009 - PromineoStudios - Todos los derechos Reservados

Diseño con estándares web - XHTML CSS - Versión anterior del sitio