Foros del Web » Programando para Internet » PHP »

Problema en LIKE con caracter %11 en php

Estas en el tema de Problema en LIKE con caracter %11 en php en el foro de PHP en Foros del Web. Saludos. Escribo en esta oportunidad porque tengo con problema para un consulta like en php, debe de tomar el valor ‘%11-A1166%’ me toma el %11 ...
  #1 (permalink)  
Antiguo 06/06/2018, 05:46
 
Fecha de Ingreso: noviembre-2015
Mensajes: 38
Antigüedad: 8 años, 5 meses
Puntos: 0
Problema en LIKE con caracter %11 en php

Saludos. Escribo en esta oportunidad porque tengo con problema para un consulta like en php, debe de tomar el valor ‘%11-A1166%’ me toma el %11 como un carácter extraño, como hago para que me tome ese valor como es?
Estoy utilizando mysqli, para las consultas utilizo la sentencia query
  #2 (permalink)  
Antiguo 06/06/2018, 06:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema en LIKE con caracter %11 en php

Postea el código. Sin ver lo que haces es complicado adivinar donde stá el fallo.
Por otro lado, hay que ver si el error que dices es en el SQL propiamente dicho, o es al enviar el valor de la condición. Son casos distintos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 06/06/2018, 10:31
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Problema en LIKE con caracter %11 en php

Cita:
Iniciado por agui90 Ver Mensaje
Saludos. Escribo en esta oportunidad porque tengo con problema para un consulta like en php, debe de tomar el valor ‘%11-A1166%’ me toma el %11 como un carácter extraño, como hago para que me tome ese valor como es?
Estoy utilizando mysqli, para las consultas utilizo la sentencia query
Puedo apostar que tu consulta la estas haciendo con DOBLE comilla

Código:
funcion_query("SELECT * FROM foo WHERE field1 LIKE '%11-A1166%'");
o mejor postea solo el fragmento de codigo donde te arroja el error
  #4 (permalink)  
Antiguo 06/06/2018, 20:50
 
Fecha de Ingreso: noviembre-2015
Mensajes: 38
Antigüedad: 8 años, 5 meses
Puntos: 0
Respuesta: Problema en LIKE con caracter %11 en php

Gracias por responderme, coloco parte del codigo que estoy utilizando:
Código PHP:
$buscar=rawurlencode("'%".$tag."%'");
$sWhere_final=" WHERE identificarmaterial.tag LIKE $buscar";
$sQuery "SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , "" "implode(", "$aColumns)).
FROM $sTable $sWhere_final $sWhere $sOrder $sLimit"
;
$rResult $this->_db->query($sQuery) or die($this->_db->error()); 
Me da error, en esta linea: $rResult = $this->_db->query($sQuery) or die($this->_db->error()); pero la sentencia esta bien porque la ejecuto en el phpmyadmin y funciona pero en php es donde da el error.
  #5 (permalink)  
Antiguo 08/06/2018, 20:36
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
De acuerdo Respuesta: Problema en LIKE con caracter %11 en php

Cita:
Iniciado por agui90 Ver Mensaje
Gracias por responderme, coloco parte del codigo que estoy utilizando:
Código PHP:
$buscar=rawurlencode("'%".$tag."%'");
$sWhere_final=" WHERE identificarmaterial.tag LIKE $buscar";
$sQuery "SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , "" "implode(", "$aColumns)).
FROM $sTable $sWhere_final $sWhere $sOrder $sLimit"
;
$rResult $this->_db->query($sQuery) or die($this->_db->error()); 
Me da error, en esta linea: $rResult = $this->_db->query($sQuery) or die($this->_db->error()); pero la sentencia esta bien porque la ejecuto en el phpmyadmin y funciona pero en php es donde da el error.
primero, en tu base de datos dudo que ejecutes la consulta tal cual, por que mira , que
la funcion rawurlencode , te convierte las comillas simples en ' en %27

por lo que en tu consulta cuando mandas por ejemplo


$buscar=rawurlencode("'%11-A1166%'");

su resultado sera

%27%2511-A1166%25%27

como vees se pierde tu simple comilla

la funcion rawurlencode solo esta pensada para asignarles un valor a todo texto,cadena o string, que sea entendible para una URL y no es recomendable para ESCAPAR variables de SQL

o en su lugar

Código PHP:
Ver original
  1. $buscar=rawurlencode("'%".$tag."%'");
  2. //cambialo por
  3. $buscar=rawurlencode($tag);
  4. $buscar="'%$buscar%'";

SQL y PHP puede manejar a veces sintaxys parecidas pero no confundas, hay cosas que son interpretadas diferentemente por que tiene un lenguaje propio.

tambien te sugiero que pienses sobre los problemas de seguridad, que pueden causar las SQL INJECTION.

Etiquetas: mysql, query
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 13:45.