Foros del Web » Programando para Internet » PHP »

Select y reqest

Estas en el tema de Select y reqest en el foro de PHP en Foros del Web. Hola: En una consulta a una tabla de mi BD recibo el siguiente error: You have an error in your SQL syntax; check the manual ...
  #1 (permalink)  
Antiguo 16/07/2009, 13:06
 
Fecha de Ingreso: septiembre-2007
Mensajes: 23
Antigüedad: 17 años, 2 meses
Puntos: 0
Select y reqest

Hola:
En una consulta a una tabla de mi BD recibo el siguiente error:

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 '' at line 1 qry::SELECT * FROM tabla WHERE Id_documento =

La consulta es la siguiente:

Código PHP:
<?php
mysql_connect
("localhost","urgen_db_owner","urgencias08") or die("No se pudo conectar a la base de datos");

mysql_select_db("urgencias_db");

$qry="SELECT * FROM actasdue WHERE Id_documento = {$_REQUEST['Id_documento']}";
$res=mysql_query($qry) or die(mysql_error()." qry::$qry");
$obj=mysql_fetch_object($res);        
    
header("Content-type: {$obj->tipo}");

header('Content-Disposition: attachment; filename="'.$obj->nombre_archivo.'"');

print 
$obj->contenido;

mysql_close();
?>
¿Sabe alguien a que se puede deber? Soy un novatazo que se pega de cabezazos con la pantalla por hacer una pequeña aplicación y me gustaría aprender un poco más.
Gracias
  #2 (permalink)  
Antiguo 16/07/2009, 13:23
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: Select y reqest

No tienes ningún valor en $_REQUEST['Id_documento'], por eso produce error. Verifica que realmente así se llama el campo del formulario.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 16/07/2009, 13:24
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Select y reqest

Verifica que hayas escrito bien el nombre del campo

Id_documento

Mi sugerencia es que hagas un echo para ver si te trae datos la variable

echo $_REQUEST["Id_document"];
  #4 (permalink)  
Antiguo 16/07/2009, 13:35
Avatar de argy  
Fecha de Ingreso: octubre-2007
Ubicación: Longitud 75º Latitud 18º Sur
Mensajes: 614
Antigüedad: 17 años
Puntos: 18
Respuesta: Select y reqest

utiliza isset para comprobar si existe la variable y empty para verificar si es vacío o no, además que pasaría si no existiera esa variable o esté vacío xD tienes muchos bugs en tu código.

suerte.
__________________
Software libre para un mundo libre.

Eventualmente en el foro.
  #5 (permalink)  
Antiguo 16/07/2009, 13:57
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 18 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Select y reqest

Cita:
Iniciado por Imanol78 Ver Mensaje
Hola:
En una consulta a una tabla de mi BD recibo el siguiente error:

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 '' at line 1 qry::SELECT * FROM tabla WHERE Id_documento =

La consulta es la siguiente:

Código PHP:
<?php
mysql_connect
("localhost","urgen_db_owner","urgencias08") or die("No se pudo conectar a la base de datos");

mysql_select_db("urgencias_db");

$qry="SELECT * FROM actasdue WHERE Id_documento ={$_REQUEST['Id_documento']} ";
$res=mysql_query($qry) or die(mysql_error()." qry::$qry");
$obj=mysql_fetch_object($res);        
    
header("Content-type: {$obj->tipo}");

header('Content-Disposition: attachment; filename="'.$obj->nombre_archivo.'"');

print 
$obj->contenido;

mysql_close();
?>
¿Sabe alguien a que se puede deber? Soy un novatazo que se pega de cabezazos con la pantalla por hacer una pequeña aplicación y me gustaría aprender un poco más.
Gracias

Código PHP:
<?php
mysql_connect
("localhost","urgen_db_owner","urgencias08") or die("No se pudo conectar a la base de datos");

mysql_select_db("urgencias_db");

$documento="";
if (isset(
$_REQUEST['Id_documento']))
  
$documento=$_REQUEST['Id_documento'];
if (
$documento!="")
  
$qry="SELECT * FROM actasdue WHERE Id_documento = '$documento' ";
  
$res=mysql_query($qry) or die(mysql_error()." qry::$qry");
  
$obj=mysql_fetch_object($res);            
  
header("Content-type: {$obj->tipo}");
  
header('Content-Disposition: attachment; filename="'.$obj->nombre_archivo.'"');
  print 
$obj->contenido;
  
mysql_close();
else
  echo 
"Ingrese un documento";
?>
Con esto previenes errores muy comunes y ademas pruebas.

Saludos, espero te ayude.

Última edición por rusinho; 16/07/2009 a las 13:59 Razón: Error en el select
  #6 (permalink)  
Antiguo 16/07/2009, 14:00
Avatar de Acron_0248  
Fecha de Ingreso: junio-2005
Ubicación: 127.0.0.1
Mensajes: 1.648
Antigüedad: 19 años, 4 meses
Puntos: 18
Respuesta: Select y reqest

Solo para agregar unas cosas más además de lo que ya te dijeron sobre asegurarte que $_REQUEST no está vacío....

1. Espero que "urgen_db_owner" no sea el verdadero nombre del usuario mysql y que "urgencias08" no sea su verdadera clave y que tu base de datos no se llame en realidad "urgencias_db". Si es así, no los publiques, son datos confidenciales que solo deberías saber tú y quien tenga permisos administrativos con la base de datos.

2. No uses $_REQUEST, usa $_GET o $_POST o $_COOKIE (dependiendo de cómo trabaje tu aplicación)

3. Valida los datos que llegan. ¿Qué pasa si en $_REQUEST['Id_documento'] lo que hay como valor es:

; DROP DATABASE urgencias_db

o tal vez

' AND TRUNCATE TABLE actuasdue'--

??

Tienes a tu disposición para validar datos cosas como (solo usaré $_REQUEST como ejemplo, recuerda usar $_GET o $_POST o $_COOKIE en vez de $_REQUEST):

type casting:
Código PHP:
$id = (int) $_REQUEST['Id_documento']; 
revisar el tipo de dato:

Código PHP:
if ( is_int($_REQUEST['Id_documento']) ) {} 
o

Código PHP:
if ( ctype_digit($_REQUEST['Id_documento']) ) {} 
o

Código PHP:
if ( is_numeric($_REQUEST['Id_documento']) ) {} 
o

Código PHP:
if ( preg_match('/\d+/'$_REQUEST['Id_documento']) ) {} 

// o puedes usar preg_match_all 
o

Código PHP:
if ( filter_var($_REQUEST['Id_documento'], FILTER_VALIDATE_INT) ) {} 
y por supuesto, escapar datos:

Código PHP:
$id mysql_real_escape_string($_REQUEST['Id_documento']); 
Las más seguras son type casting, usar expresiones regulares, la extensión filter (depende de la versión de PHP) y escapar, en tu caso, con mysql_real_escape_string.

En cualquier caso, hay muchas opciones para validar los datos que esperas recibir como para no usar ninguna de ellas.
__________________
Usuario Reigistrado de linux #399288
  #7 (permalink)  
Antiguo 17/07/2009, 02:18
 
Fecha de Ingreso: septiembre-2007
Mensajes: 23
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Select y reqest

Vaya, que monton de respuestas.
Voy a probar todo lo que me vais comentando. Gracias a todos. Se que tengo muchos errores de principiante, pero bueno, estoy empezando y la verdad es que me está gustando.
Insisto: GRACIAS A TODOS
Un saludo
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 21:33.