Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Nombre de las columnas en Mysql

Estas en el tema de Nombre de las columnas en Mysql en el foro de Mysql en Foros del Web. Hola foreros! Estoy intentado leer una tabla con php, pero no hay forma, jeje. Mirar la tabla se llama '0' y sus columnas son '0','1','2'... ...
  #1 (permalink)  
Antiguo 08/08/2009, 17:39
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 12 años, 8 meses
Puntos: 19
Nombre de las columnas en Mysql

Hola foreros!

Estoy intentado leer una tabla con php, pero no hay forma, jeje. Mirar la tabla se llama '0' y sus columnas son '0','1','2'... el problema lo tengo con PHP que me da error con la siguiente consulta:

Código PHP:
$consult="SELECT 1 FROM 1";
$query mysql_query($consult);    
if(
$row=mysql_fetch_array($query)) 
    {
        echo 
'si';                            
    }
else
    {
        echo 
'no';                    
    } 
He probado varias combinaciones pero todas me dan este error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL

¿Sabeis a que es debido?
  #2 (permalink)  
Antiguo 08/08/2009, 17:50
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 12 años, 8 meses
Puntos: 19
Respuesta: Nombre de las columnas en Mysql

Hola de nuevo...

Tras algunas pruebas... me he dado cuenta de que es por culpa de los nombre de las tablas, es decir, si llamo a las tablas de un modo alfanumerico todo funciona... pero si las llamo solo con un numero me da error...

¿No es un poco raro... un poco limitado?
  #3 (permalink)  
Antiguo 08/08/2009, 17:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Nombre de las columnas en Mysql

Bueno, el problema es que no puedes poner un literal o un número en una sentencia SELECT, se interpretarán como lo que son.
Por otro lado, el problema lo tienes desde el inicio: Nunca, repito, NUNCA, por protocolo y estándar una columna de una tabla, o una tabla llevan por nombre un valor numérico. Esto es válido tanto para el SQL como para cualquier lenguaje de programación.
No es una regla escrita simplemente porque se trata de algo que siempre existió, desde los inicios, y todos los desarrolladores lo saben.
De hecho, si intentas crear en consola una tabla con números por nombre de columnas, bases o tablas, verás que da error de sintaxis. Si lo has podido hacer es porque has debido usar alguna interfase para crear la tabla. En las interfases, para crear una tabla, estas envían al DBMS la sentencia con algunas transformaciones para resolver problemas de compatibilidad. Una de esas transformaciones es la que resolverá tu problema: Los nombres de campos, tablas y bases se encierran entre acentos agudos (`), para permitir el uso de palabras reservadas, o caracteres no alfanuméricos en los nombres.
Entonces, para poder acceder a los valores, deberás hacer lo mismo:
Código SQL:
Ver original
  1. SELECT `0`, `1`, `2`
  2. FROM tabla;
Y cada vez que invoques esos campos, deberás hacer lo mismo:
Código SQL:
Ver original
  1. SELECT `0`, `1`, `2`
  2. FROM tabla
  3. WHERE `1`= valor;

Sugerencia final: Atente a las reglas de programación, y si quieres numerar los campos, ponles un caracter alfabético al inicio, como se hace en todos los lenguajes de programación...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 08/08/2009, 18:06
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.567
Antigüedad: 12 años, 8 meses
Puntos: 19
Respuesta: Nombre de las columnas en Mysql

Hola gnzsoloyo,

Muchas gracias por tu mensaje... me han servido mucho tus consejos...

Gracias!
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 04:42.