Foros del Web » Programando para Internet » PHP »

Consulta db con GET

Estas en el tema de Consulta db con GET en el foro de PHP en Foros del Web. Hola, tengo una duda bastante curiosa. Hago una consulta a la db con un GET en el where, hasta ahi todo bien, por ejemplo la ...
  #1 (permalink)  
Antiguo 05/02/2009, 15:54
 
Fecha de Ingreso: agosto-2008
Mensajes: 1
Antigüedad: 16 años, 3 meses
Puntos: 0
Pregunta Consulta db con GET

Hola, tengo una duda bastante curiosa.
Hago una consulta a la db con un GET en el where, hasta ahi todo bien, por ejemplo la dirección es index.php?noticia=1 y si pongo index.php?noticia=1ASDF, osea si pongo un numero que tenga una de las noticias y a mayores letras o cualquier caracter me lo pilla también. Pero si pongo index.php?noticia=A1asdf, osea poniendo una o varias letras por delante del número ya no me lo pilla.

Mi consulta es la siguiente:
$query = "select * from noticias where id='".mysql_real_escape_string($_GET[id])."'";

Mi razonamiento es que el campo id de la db es int, y como ese campo solo pilla números, pues a la hora de coger el GET sólo coge los números?

Alguien sabe por que sucede esto?
Se solucionarlo pero tengo la duda en porque pasa, si lo que realmente pones es 1ASDF por ejemplo, porque te coge solo el número.

Gracias y un saludo.
  #2 (permalink)  
Antiguo 05/02/2009, 15:59
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Consulta db con GET

Asegurate de recibir un numero en id:
Código PHP:
$id intval($_GET['id']);
$query "select * from noticias where id=$id"
Edito:
Código PHP:
// O bien:
if(!is_int($_GET['id'))
    die(
'Proporciona un numero entero para generar la consulta'); 
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 05/02/2009, 16:00
Avatar de kurokishi  
Fecha de Ingreso: enero-2009
Ubicación: Tenochtitlán
Mensajes: 109
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Consulta db con GET

tu lo has dicho, por que el campo esta en int, y solo te lee los numeros, para que te resulte mejor ponle que el campo sea character, para que te lea toda la cadena.
salu2!
  #4 (permalink)  
Antiguo 05/02/2009, 16:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Consulta db con GET

Porque el motor de MySQL trata de ser benévolo y al ver que el tipo de campo es un INT va a ser un cast del valor a INT, en teoria es tu tarea como programador el evitar eso para que no lo haga la base de datos por ti.

Saludos
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 12:06.