Foros del Web » Programando para Internet » PHP »

Búsquedas con LIKE en php+mysql no valida bien..

Estas en el tema de Búsquedas con LIKE en php+mysql no valida bien.. en el foro de PHP en Foros del Web. Digo esto porque he accesado datos inválidos o que no existen en la base de datos. Me explico : Tengo una base de datos llamada ...
  #1 (permalink)  
Antiguo 25/09/2006, 09:37
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Búsquedas con LIKE en php+mysql no valida bien..

Digo esto porque he accesado datos inválidos o que no existen en la base de datos. Me explico :

Tengo una base de datos llamada "tramites", y su table de "usuarios" con los campos : usuario(varchar : 12), clave(varchar : 12), privilegio(char : 1).

Realizo la búsqueda en el script :
$conexion_host_tramites = mysql_connect("localhost", "root", "root");
mysql_select_db("tramites", $conexion_host_tramites);
$consulta_usuarios = mysql_query("SELECT * FROM usuarios WHERE usuario LIKE '%$usuario%' AND clave LIKE '%$clave%'", $conexion_host_tramites);
if ($reg_actual = mysql_fetch_array($consulta_usuarios))
$privilegio = $row->privilegios;
else
echo "<DIV align='center'>Error...usuario o clave incorrecta</DIV>";

Los datos del usuario en la tabla "usuarios" son los siguientes :
Registro 1 :
usuario : jglorenzos
clave : lorenzos

Registro 2 :
usuario : lorenzo
clave : loren

Bueno, la validación con "LIKE", permite accesar con usuario = "jglorenzo" y clave=lorenzo, y no debería porque no es válido, solamente por una letra al final del datos.

Porqué valida esto si es incorrecto?
  #2 (permalink)  
Antiguo 25/09/2006, 10:13
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
PRUEBA CAMBIANDO LA CONSULTA DE ESTA FORMA:

$consulta_usuarios = mysql_query("SELECT * FROM usuarios WHERE usuario LIKE '%".$usuario."%' AND clave LIKE '%".$clave."%'", $conexion_host_tramites);

ESPERO TE HAYA SERVIDO DE ALGO. SUERTE
  #3 (permalink)  
Antiguo 25/09/2006, 13:00
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Lo incorrecto es tu sentencia SQL, asi como lo tienes busca asi
[cualquier_combinacion_de_caracteres_incluyendo_vac io][valor_de_variable_usuario][cualquier_combinacion_de_caracteres_incluyendo_vac io]
y lo mismo para la clave
quitale los % al like
  #4 (permalink)  
Antiguo 25/09/2006, 13:51
 
Fecha de Ingreso: octubre-2005
Mensajes: 778
Antigüedad: 18 años, 6 meses
Puntos: 1
Lo solucioné de esta manera :

$consulta_usuarios = mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario' AND clave='$clave'", $conexion_host_tramites);

Quité la sentencia LIKE y el símbolo "%" al comienzo y final de las variables de búsqueda.

Encuentra el registro correctamente.

Anteriormente con la sentencia LIKE y el símbolo "%", recibía un valor del campo privilegio equivocado. Creo que apuntaba a otro registro.

Gracias foristas.
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 07:03.