Foros del Web » Programando para Internet » PHP »

Consulta MySQL en PHP

Estas en el tema de Consulta MySQL en PHP en el foro de PHP en Foros del Web. Hola a tod@s, tengo un script que básicamente se encarga de ejecutar una consulta SQL. Las líneas más importante del script son: Código: $this->sql=@mysql_real_escape_string($sql, $this->dbLink) ...
  #1 (permalink)  
Antiguo 05/10/2011, 08:40
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 2 meses
Puntos: 0
Consulta MySQL en PHP

Hola a tod@s,

tengo un script que básicamente se encarga de ejecutar una consulta SQL. Las líneas más importante del script son:
Código:
$this->sql=@mysql_real_escape_string($sql, $this->dbLink) OR die("La consulta no es válida<br/>");
$this->result=@mysql_query($this->sql, $this->dbLink) OR die("La consulta no ha podido llevarse a cabo<br/>");
He probado el script con
Código:
$sql='Select * from pregunta';
Y funciona perfectamente.
El problema viene cuando utilizo una SQL un poco más complejo, como por ejemplo:
Código:
$sql="INSERT INTO 'votacion'.'pregunta' ('id', 'pregunta') VALUES (NULL, 'prueba5')";
Aquí me devuelve La consulta no ha podido llevarse a cabo.
Lo curioso es que esa SQL es la que me devuelve PhpMyAdmin después de insertar prueba5 correctamente en la tabla pregunta
Inicialmente pensé que el problema estaba en la sintaxis de la consulta pero probé directamente con la SQL que me da PhpMyAdmin y sigue fallando :(

Si a alguien se le ocurre por qué puede ser, le agradezco la ayuda.

Un saludo,
Jose
__________________
Nadie dijo que ésto iba a ser fácil
  #2 (permalink)  
Antiguo 05/10/2011, 08:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Consulta MySQL en PHP

Es conveniente que en tu or die() imprimas el valor de mysql_error(), así puedes ver la razón del error.

Saludos.
  #3 (permalink)  
Antiguo 05/10/2011, 09:00
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 7 meses
Puntos: 511
Respuesta: Consulta MySQL en PHP

Cambia estas lineas y comentas

Código PHP:
Ver original
  1. $this->sql=mysql_real_escape_string($sql, $this->dbLink) OR die("La consulta no es válida<br/>".mysql_erorr());
  2. $this->result=mysql_query($this->sql, $this->dbLink) OR die("La consulta no ha podido llevarse a cabo<br/>".mysql_error());

Recuerda que el @ oculta los errores en php y no es recomendable

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #4 (permalink)  
Antiguo 05/10/2011, 17:30
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 2 meses
Puntos: 0
Respuesta: Consulta MySQL en PHP

Éste es el error que me da:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\'votacion\'.\'pregunta\' (\'id\', \'pregunta\') VALUES (NULL, \'prueba6\')' at line 1
__________________
Nadie dijo que ésto iba a ser fácil
  #5 (permalink)  
Antiguo 05/10/2011, 18:12
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Consulta MySQL en PHP

Tienes errores de sintaxis MySQL, sería bueno que colocaras el nombre y la estructura de la tabla para poder ayudarte. Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #6 (permalink)  
Antiguo 05/10/2011, 19:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Consulta MySQL en PHP

Parece ser que son las \', mysql_real_escape_string se debe de usar SOLO en los valores, no en todo el query.

Saludos.
  #7 (permalink)  
Antiguo 05/10/2011, 19:48
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Consulta MySQL en PHP

Es correcto GatorV, buen observador. +1

Código PHP:
Ver original
  1. //ESTA MAL HECHO
  2. $this->sql=@mysql_real_escape_string($sql, $this->dbLink) OR die("La consulta no es válida<br/>");

Código PHP:
Ver original
  1. // CORRECTO
  2. $query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
  3.             mysql_real_escape_string($user),
  4.             mysql_real_escape_string($password));

Debes usar la función solo en las variables que recibes por $_GET, $_POST etc... Se están escapando todas las comillas y por eso da error de sintaxis.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #8 (permalink)  
Antiguo 06/10/2011, 03:17
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 2 meses
Puntos: 0
De acuerdo Solucionado

Perfecto! Ahora todo funciona

Gracias por la ayuda y por la rapidez al contestar

Saludos,
Jose
__________________
Nadie dijo que ésto iba a ser fácil

Etiquetas: mysql, sql, tabla
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 16:09.