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

Problema con SQL o PHP

Estas en el tema de Problema con SQL o PHP en el foro de Bases de Datos General en Foros del Web. Buenas Puse en una pagina un TEXT AREA donde mi cliente va escribir ahi las sentencias SQL para que cuando le de al boton BUSCAR ...
  #1 (permalink)  
Antiguo 17/12/2005, 15:29
Avatar de Jeremias  
Fecha de Ingreso: agosto-2003
Ubicación: Caracas
Mensajes: 504
Antigüedad: 20 años, 8 meses
Puntos: 0
Problema con SQL o PHP

Buenas
Puse en una pagina un TEXT AREA donde mi cliente va escribir ahi las sentencias SQL para que cuando le de al boton BUSCAR la sentencia SQL escrita en ese TEXT AREA es mandada a una pagina php donde toma eso y ejecuta ese query y muestra su resultado.
Pero estoy teniendo un problema, y se lo muestro con ejemplos.
Si escribo en el TEXT AREA :
Código:
SELECT nombres
FROM tbladoles ORDER BY nombres ASC
Pero si escribo una sentencia WHERE donde haya un = me da un error, por ejemplo si meto esta sentencia SQL:
Código:
SELECT nombres
FROM tbladoles WHERE sexo='M' ORDER BY nombres ASC
Me lanza el siguiente error:
Cita:
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 '\'M\' ORDER BY nombres ASC' at line 2
Pero el problema como tal no es el WHERE, porque intente hacerlo con el WHERE pero en vez de = puse un > y ahi si me trabajo bien, entonces en definitiva el problema es la pregunta por CAMPO = ALGO.
En base a esto y al error que lanza ustedes sabran que pasa????
De verdad les agradezco su ayuda. GRACIAS.
NOTA: La BD que uso es MySQL, y uso phpMyAdmin.
__________________
Atte. Jere
Agradezco su pronta colaboración.
;-) :arriba:Hoy por mi, mañana por ti:arriba: ;-)
  #2 (permalink)  
Antiguo 17/12/2005, 18:34
Avatar de Tx
Tx
 
Fecha de Ingreso: enero-2002
Ubicación: Cba - Arg
Mensajes: 188
Antigüedad: 22 años, 3 meses
Puntos: 1
Hola, probaste usar stripslashes?
supongo recibiras tu consulta algo asi:

Código PHP:
$sql "\"".stripslashes($_POST['txtConsulta'])."\"";
$res mysql_query($sql);
//****** resto de tu codigo ***** 
nose, no lo probé, calculo que te puede funcionar.
Saludos..
  #3 (permalink)  
Antiguo 18/12/2005, 09:39
Avatar de Jeremias  
Fecha de Ingreso: agosto-2003
Ubicación: Caracas
Mensajes: 504
Antigüedad: 20 años, 8 meses
Puntos: 0
Gracias antes que nada por responder.
Ya lo probe y el error que me lanza es:
Cita:
Query was empty
¿Que hace el codigo que me distes?
¿abra solucion para lo que quiero hacer?
__________________
Atte. Jere
Agradezco su pronta colaboración.
;-) :arriba:Hoy por mi, mañana por ti:arriba: ;-)
  #4 (permalink)  
Antiguo 18/12/2005, 19:03
Avatar de Tx
Tx
 
Fecha de Ingreso: enero-2002
Ubicación: Cba - Arg
Mensajes: 188
Antigüedad: 22 años, 3 meses
Puntos: 1
Hola Jeremias, claro que tiene solucion, el tema es saber como lo estas haciendo, y de ahi tomar medidas.
Por eso te puse, que "supongo" como lo estas haciendo.
El código que puse antes, es para desmarcar las protecciones (\) que pone PHP en ciertos caracteres indeseables, como comillas simples y dobles, y te quede el string de consulta como tiene que ser o sea
Código:
SELECT nombres FROM tbladoles WHERE sexo='M' ORDER BY nombres ASC;
y no
Código:
SELECT nombres FROM tbladoles WHERE sexo=\'M\' ORDER BY nombres ASC;
Para verificar que está recibiendo tu funcion mysql_query(), haz un
Código PHP:
echo $sql;
die; 
antes de la función mysql_query().
Por otro lado, tendrias que verificar como se esta escribiendo la consulta, si con comillas simples o dobles, en todo caso, opta por reemplazar las camillas por simples siempre.
Prueba así:
Código PHP:
$sql str_replace("\"","'",stripslashes($_POST['sql']));
$res mysql_query($sql); 
Si sigue sin funcionar, pega un poco de codigo y vemos mejor.
Saludos...

Última edición por Tx; 18/12/2005 a las 19:14
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 08:01.