Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Mysqli buscar con Like Forma correcta

Estas en el tema de Mysqli buscar con Like Forma correcta en el foro de Frameworks y PHP orientado a objetos en Foros del Web. He estado tratando de hacer un "buscador" de palabras.. y me he topado con mil dramas... normalmente las consultas SQL con poo yo las hago ...
  #1 (permalink)  
Antiguo 06/11/2009, 18:04
 
Fecha de Ingreso: mayo-2009
Mensajes: 25
Antigüedad: 15 años
Puntos: 1
Mysqli buscar con Like Forma correcta

He estado tratando de hacer un "buscador" de palabras.. y me he topado con mil dramas...
normalmente las consultas SQL con poo yo las hago con mysqli algo así..
Código PHP:
...->prepare(SELECT.... WHERE algo = ? .... 
LUEGO
bind_param('..',$...);
EXECUTE y presto!

el problema surgió cuando traté de hacer el buscador usando los simbolos de % <- porcentaje como comodines .....
hice algo así
Código PHP:
...->prepare(SELECT... WHERE algo LIKE %?% 
el problema es que BIND PARAM no funca :(
entonces le pedí que me mostrar el error y me sale..
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 '%?% .....
terrible..
buscando y buscando
me encontré con una forma "un poco distinta" de hacer las cosas..
y es "embeber" lo que me llega directamente como variable en el prepare
Código PHP:
->prepare(SELECT ... WHERE algo LIKE '%$dale_gas_total%' .... 
el problema con esto es que dudo de su "SEGURIDAD" al momento de procesar el temita
yo creo que es muy propenso a sql injection .... peroo quiero saber su opinion
y porfavor PLEASE diganme como se hace el LIKE con POO con mysqli! porque realmente ya he estado horas y hay muy muy poca documentación con el tema...
  #2 (permalink)  
Antiguo 07/11/2009, 13:07
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Mysqli buscar con Like Forma correcta

Hola,

Cita:
Iniciado por morpheus747 Ver Mensaje
... el problema con esto es que dudo de su "SEGURIDAD" al momento de procesar el temita
yo creo que es muy propenso a sql injection ....
"SELECT ... WHERE algo = ?"

$temp = "%$algo%";
bind_param('s', $temp);

ó

bind_param('s', sprintf("%%%s%%", $algo));

Haciendo el reemplazo que hiciste 'de otra manera' sí existe la posibilidad. Usando 'prepared statement' con 'bind param' correctamente no debería existir 'sql injection' (aunque va a depender de la implementación de mysqli, y la probabilidad es muy baja).

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