Foros del Web » Programando para Internet » PHP »

Sentencia SQL via Formulario

Estas en el tema de Sentencia SQL via Formulario en el foro de PHP en Foros del Web. Tengo una página donde quiero incluir la función de busqueda avanzada de registros mediante secuencias MySQL, por lo tanto pongo un formulario donde el usuario ...
  #1 (permalink)  
Antiguo 27/02/2002, 19:28
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Sentencia SQL via Formulario

Tengo una página donde quiero incluir la función de busqueda avanzada de registros mediante secuencias MySQL, por lo tanto pongo un formulario donde el usuario TECLEA parte de la sentencia (p.e. where nombre = 'manuel') y luego la manda a un script que lo completa con el resto de las condicionantes pero NO FUNCIONA!!!... aqui les va:

<<PREVIAMENTE TENGO DEFINIDOS LOS DATOS DEL HOST, Y LA VARIABLE $datoquery LA TRAIGO DEL FORMULARIO>>

if ($datoquery!="")
{
$cond=" and $datoquery";
}
else
{
$cond="";
}
include('datoshost.inc');
$conexion=mysql_connect($ser,$usr,$pas);
$resultado=mysql_db_query($basedatos,"select * from casos $cond");

<<AQUI PONGO LOS RESULTADOS>>

El problema es que si dejo $datoquery vacío, me resulta correctamente en la lista completa de registros de mi tabla, pero si escribo una condicion cualquiera, me regresa error (ni siquiera datos vacíos, sino ERROR...

Que puedo estar haciendo mal Maestros??

Saludos!
  #2 (permalink)  
Antiguo 27/02/2002, 19:32
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Re: Sentencia SQL via Formulario

PERDON... corrijo

if ($datoquery!="")
{
$cond="where grupo='clientes' and $datoquery";
}
else
{
$cond="";
}
include('datoshost.inc');
$conexion=mysql_connect($ser,$usr,$pas);
$resultado=mysql_db_query($basedatos,"select * from casos $cond");

  #3 (permalink)  
Antiguo 28/02/2002, 08:37
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 16 años, 1 mes
Puntos: 68
Re: Sentencia SQL via Formulario

Porque no utilizas la funcion mysql_error() para saber que error te está dando el mySQL, y de esa manera saber como corregirlo???

Saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #4 (permalink)  
Antiguo 28/02/2002, 11:31
 
Fecha de Ingreso: enero-2002
Ubicación: Dentro del corralón
Mensajes: 287
Antigüedad: 15 años, 11 meses
Puntos: 0
Re: Sentencia SQL via Formulario

Tambien seria bueno que imprimas el valor de la variable $cond porque si en el ejemplo decis que el usuario tipea por ej. where nombre = 'manuel' , en tu segundo post, $cond te queda como
where grupo='clientes' and where nombre = 'manuel' con lo cual te va a dar un error de sintaxis ya que no podés poner dos veces la palabra where en la condición.
Saludos.

<hr noshade><font face=Verdana size=2>Leonardo D'Angelo - Buenos Aires - Argentina[/CODE]
  #5 (permalink)  
Antiguo 28/02/2002, 15:40
Avatar de chubu  
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 133
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: Sentencia SQL via Formulario

ademas, es muy posible que el string que viene del formulario este &quot;escapeado&quot;, es algo que el PHP hace desde hace algunas versiones, por un tema de seguridad, si es asi, debes aplicar la funcion stripslashes sobre esa variable para eliminar el &quot;escapeado&quot;.

saludos

  #6 (permalink)  
Antiguo 28/02/2002, 16:18
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 15 años, 10 meses
Puntos: 5
Re: Sentencia SQL via Formulario

Fijate que tienes razon, el doble where podia haber sido un error, pero aun poniendo

name='manuel'

me da el mismo error.

Voy a tratar de checar el error con el comando que me sugieren para ver si me da otra pista.

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 06:02.