Foros del Web » Programando para Internet » PHP »

Método definitivo para especificar variables en consulta a base de datos MYSQL

Estas en el tema de Método definitivo para especificar variables en consulta a base de datos MYSQL en el foro de PHP en Foros del Web. He intentado esto de dos formas y no se exactamente cual de ellas falla ya que no da error en ninguna de ellas. ¿Son las ...
  #1 (permalink)  
Antiguo 14/12/2010, 08:22
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 18 años, 11 meses
Puntos: 45
Pregunta Método definitivo para especificar variables en consulta a base de datos MYSQL

He intentado esto de dos formas y no se exactamente cual de ellas falla ya que no da error en ninguna de ellas. ¿Son las dos correctas?

1)
Código PHP:
mysqlquery "UPDATE tabla SET columna1=" $variable ", columna2=" $variable2 ";"
2)
Código PHP:
mysqlquery "SELECT * FROM tabla WHERE loquesea LIMIT $variable1,$variable2;" 
  #2 (permalink)  
Antiguo 14/12/2010, 08:32
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Método definitivo para especificar variables en consulta a base de datos M

prueba asi

1)
Código PHP:
$mysqlquery "UPDATE tabla SET columna1='" $variable "', columna2='" $variable2 "' WHERE loquesea;"
2)
Código PHP:
$mysqlquery "SELECT * FROM tabla WHERE loquesea LIMIT '$variable1','$variable2';" 
  #3 (permalink)  
Antiguo 14/12/2010, 08:39
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 18 años, 11 meses
Puntos: 45
Respuesta: Método definitivo para especificar variables en consulta a base de datos M

Vaya, interesante, resulta que una comilla simple (') escapa de la consulta el texto hacia una variable. Lo probaré.

Por cierto, esta serie de detalles donde vienen especificados? Oficialmente está descrito?

Un saludo.
  #4 (permalink)  
Antiguo 14/12/2010, 10:51
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 18 años, 11 meses
Puntos: 45
Respuesta: Método definitivo para especificar variables en consulta a base de datos M

Vaya, pues no funciona de ninguna de las dos maneras, pero indicando el valor de la variable si que funciona, pero no me sirve entonces, si no puedo pasar la variable la página quedará estática.

Lo que funciona y no da error:
Código PHP:
$query="SELECT * FROM img ORDER BY totalvotos desc LIMIT 0,10;" 
Lo que da error:
Código PHP:
$query="SELECT * FROM img ORDER BY totalvotos desc LIMIT 0,'" $paginac "';"
Código PHP:
$query="SELECT * FROM img ORDER BY totalvotos desc LIMIT 0,'$paginac';" 
  #5 (permalink)  
Antiguo 14/12/2010, 11:05
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: Método definitivo para especificar variables en consulta a base de datos M

LIMIT exige que el valor sea un entero positivo. No admite cadenas de texto, que es lo que se produce si rodeas el valor entre apóstrofes.
En el caso de INSERT o UPDATE, toda valor de cadena, fecha, hora o fechahora, debe quedar encerrado entre apostrofes; no así los valores numéricos. Los valores numéricos pueden ir entre apostrofes sólo como condiciones del WHERE, o para insertarlos en sus respectivos campos (UPDATE/INSERT), pero no es una buena práctica porque exige al DBMS que realice una conversión implícita de datos, lo que puede tener resultados erráticos si el valor no se ajusta al tipo o rango de datos exactamente.
LIMIT no permite una conversión implícita, por eso da error.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 14/12/2010, 11:19
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 18 años, 11 meses
Puntos: 45
Respuesta: Método definitivo para especificar variables en consulta a base de datos M

Cita:
$paginac = 10;
El valor no está entre apostrofes, si estuviera entre comillas sería una cadena de caracteres (string) en lugar de un número. Tiene que haber alguna forma de hacerlo.

Muchas gracias por tu ayuda de todas formas.
  #7 (permalink)  
Antiguo 14/12/2010, 12:56
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 18 años, 11 meses
Puntos: 45
Respuesta: Método definitivo para especificar variables en consulta a base de datos M

Cita:
Iniciado por gnzsoloyo Ver Mensaje
LIMIT exige que el valor sea un entero positivo. No admite cadenas de texto, que es lo que se produce si rodeas el valor entre apóstrofes.
En el caso de INSERT o UPDATE, toda valor de cadena, fecha, hora o fechahora, debe quedar encerrado entre apostrofes; no así los valores numéricos. Los valores numéricos pueden ir entre apostrofes sólo como condiciones del WHERE, o para insertarlos en sus respectivos campos (UPDATE/INSERT), pero no es una buena práctica porque exige al DBMS que realice una conversión implícita de datos, lo que puede tener resultados erráticos si el valor no se ajusta al tipo o rango de datos exactamente.
LIMIT no permite una conversión implícita, por eso da error.
Probando e intentándolo veo que la cosa va por donde tu indicas. Si pongo la variable directamente $variable dentro de la consulta si es capaz de realizarla y me limita el número de registros.

Seguiré intentándolo.
  #8 (permalink)  
Antiguo 14/12/2010, 16:01
 
Fecha de Ingreso: diciembre-2010
Mensajes: 61
Antigüedad: 13 años, 4 meses
Puntos: 4
Respuesta: Método definitivo para especificar variables en consulta a base de datos M

Lo que tiene que aprender es a concatener variables en un string de php. Y esto se hace con .

Ejemplo 1

$numero=0;
$inicio="hola, ";
$final="concatenar cadenas.";
$query=$inicio."estoy aprendiendo desde ".$numero." a ".$final;

obtendriamos
hola, estoy aprendiendo desde 0 a concatenar cadenas.
  #9 (permalink)  
Antiguo 14/12/2010, 16:48
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 18 años, 11 meses
Puntos: 45
Respuesta: Método definitivo para especificar variables en consulta a base de datos M

yop289, perdona que te diga, ese método ya lo indiqué más arriba, específicamente en mi primer mensaje y no me funcionó. Según gnzsoloyo, las variables de LIMIT deben ser números enteros positivos y no cadenas de caracteres, esto es correcto y se ha solucionado definitivamente indicando directamente la variable sin encerrarla entre comillas.

Esto es "SELECT * FROM table LIMIT $variable1,$variable2;"

Por favor, antes de reescribir lo ya dicho lee un poco.

Por mi parte, ya está solucionado el problema. Muchas gracias a Death_Empire y gnzsoloyo por ayudarme. El tema ya puede ser cerrado si lo deseáis. Un saludo.
  #10 (permalink)  
Antiguo 14/12/2010, 16:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Método definitivo para especificar variables en consulta a base de datos M

de hecho, si lo piensan el detalle radica en la sintaxis del SQL, que es un lenguaje distinto a PHP... osea, que no hay método definitivo... como dicta el titulo, es ridículo...

simplemente hay que aprender la sintaxis de SQL, y respetar los hechos de la misma, que por ejemplo todos los valores numéricos deberían ir sin comillas, pues no son strings...

al final lo único que demuestra el tema es el poco entendimiento acerca de lenguajes, y sobre todo la confusión que se da por el mismo hecho de ignorar las diferencias...

aquí hay un tema que merece una buena lectura:
http://www.forosdelweb.com/f91/hable...guajes-698777/

así dejamos de mezclar todo en la misma bolsa, y recuerden que PHP no es SQL, ni es HTML, ni CSS, ni JS, ni XML, etc...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 14/12/2010, 17:47
(Desactivado)
 
Fecha de Ingreso: mayo-2005
Ubicación: España
Mensajes: 471
Antigüedad: 18 años, 11 meses
Puntos: 45
Respuesta: Método definitivo para especificar variables en consulta a base de datos M

Cita:
Iniciado por pateketrueke Ver Mensaje
de hecho, si lo piensan el detalle radica en la sintaxis del SQL, que es un lenguaje distinto a PHP... osea, que no hay método definitivo... como dicta el titulo, es ridículo...

simplemente hay que aprender la sintaxis de SQL, y respetar los hechos de la misma, que por ejemplo todos los valores numéricos deberían ir sin comillas, pues no son strings...

al final lo único que demuestra el tema es el poco entendimiento acerca de lenguajes, y sobre todo la confusión que se da por el mismo hecho de ignorar las diferencias...

aquí hay un tema que merece una buena lectura:
http://www.forosdelweb.com/f91/hable...guajes-698777/

así dejamos de mezclar todo en la misma bolsa, y recuerden que PHP no es SQL, ni es HTML, ni CSS, ni JS, ni XML, etc...
Vaya pateketrueke, veo que no tienes escrúpulos en llamarme ignorante. TODOS ignoramos algo cuando hacemos un topic en este o cualquier foro y posteamos para que otros usuarios nos ayuden a resolver nuestras dudas o los conflictos que tengamos.

El que está confundido eres tú mismo al declarar que no existe método definitivo. SÍ existe método definitivo y es colocar la variable directamente en la consulta. Te recomiendo al igual que a yop289, leer los anteriores mensajes, ya que o no te enteras o vives empeñado en que los demás somos imbéciles y tu un astro que vuelca toda su infinita sabiduría para rescatarnos de nuestra torpe ignorancia.

La consulta es MYSQL pero se realiza desde PHP lo cual significa que hay una interacción entre la sintaxis de los dos lenguajes. Para volcar la variable PHP hay que saber sobre PHP aunque la consulta sea a una base de datos MYSQL.

Si eres tan listo vete a trabajar a la NASA que seguro que te contratan sin problemas, yo me conformaré con seguir con mi mediocre vida y con mi inteligencia orgánica justa para sobrevivir.

Tu mensaje no aporta NADA didáctico al tema, solo insulta y me obligas a tener que contestarte.

Etiquetas: mysql, variables
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 20:19.