Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problemas para escapar comillas simples en una consulta

Estas en el tema de Problemas para escapar comillas simples en una consulta en el foro de PHP en Foros del Web. Hola buenas lo que trato de hacer es una especie de consulta dinamica ya que se puede buscar por una o por varias categorias lo ...
  #1 (permalink)  
Antiguo 27/11/2013, 10:34
 
Fecha de Ingreso: julio-2009
Mensajes: 117
Antigüedad: 15 años, 4 meses
Puntos: 0
Problemas para escapar comillas simples en una consulta

Hola buenas lo que trato de hacer es una especie de consulta dinamica ya que se puede buscar por una o por varias categorias lo que me lleva a tener 1 o varios

Código PHP:
OR tipo_ruta LIKE 
Bien segun el numero de checkbox que lleguen se iran concatenando

El codigo es:

Código PHP:
if(isset($_REQUEST['actividades']))
{
$coma ' OR tipo_ruta LIKE \'%'
$consulta ""
foreach (
$_REQUEST['actividades'] as $actividad){
$consulta .= $coma $actividad '%\' '
 

El codigo es bastante simple va a ir con catenando para dar un resultado como este

Código PHP:
 OR tipo_ruta LIKE '%Mountain bike%' OR tipo_ruta LIKE '%nadar%' OR tipo_ruta LIKE '%correr%' 
Con lo cual solo tendria que poner la variable $consulta donde tocase

Código PHP:
$selectbuscar 'SELECT v_ruta.id_ruta, v_ruta.nombre, login_usuario, v_ruta.descripcion, tipo_ruta, kms, dificultad, puntos_descripcion, puntos_imagenes, puntos_coordenadas, totalpuntos FROM v_ruta WHERE v_ruta.nombre LIKE \'%' mysqli_real_escape_string($conexion$termino) . '%\' OR v_ruta.descripcion LIKE \'%' mysqli_real_escape_string($conexion$termino) . '%\' ' mysqli_real_escape_string($conexion$consulta) . ' '
Pero me la interpreta de este modo:

SELECT v_ruta.id_ruta, v_ruta.nombre, login_usuario, v_ruta.descripcion, tipo_ruta, kms, dificultad, puntos_descripcion, puntos_imagenes, puntos_coordenadas, totalpuntos FROM v_ruta WHERE v_ruta.nombre LIKE '%%' OR v_ruta.descripcion LIKE '%%' OR tipo_ruta LIKE \'%Mountain bike%\'


Dejando las barras invertidas, he probado de mil formas con comillas doble simples unas dentro de las otras y al contrario, quitando, poniendo y nada no lo consigo.
  #2 (permalink)  
Antiguo 27/11/2013, 10:50
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: Problemas para escapar comillas simples en una consulta

Yo siempre uso comillas dobles para las consultas, asi no tengo problemas
Código PHP:
Ver original
  1. $sql="SELECT * FROM tabla WHERE nombre LIKE '%skar%'";
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #3 (permalink)  
Antiguo 27/11/2013, 10:53
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Problemas para escapar comillas simples en una consulta

Hola, la verdad no te entendía mucho, me podrías explicar un poquito a ver si te puedo ayudar.

A simple vista las barras me llaman la atención

Yo lo dejaría así:

Código PHP:
Ver original
  1. if(isset($_REQUEST['actividades']))
  2. {
  3. $coma = ' OR tipo_ruta LIKE '%';
  4. $consulta = "";
  5. foreach ($_REQUEST['actividades'] as $actividad){
  6. $consulta .= $coma . $actividad . '%' ';
  7.  
  8. }
  #4 (permalink)  
Antiguo 27/11/2013, 10:57
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: Problemas para escapar comillas simples en una consulta

Cita:
Iniciado por martin_9_91 Ver Mensaje
Hola, la verdad no te entendía mucho, me podrías explicar un poquito a ver si te puedo ayudar.

A simple vista las barras me llaman la atención

Yo lo dejaría así:

Código PHP:
Ver original
  1. if(isset($_REQUEST['actividades']))
  2. {
  3. $coma = ' OR tipo_ruta LIKE '%';
  4. $consulta = "";
  5. foreach ($_REQUEST['actividades'] as $actividad){
  6. $consulta .= $coma . $actividad . '%' ';
  7.  
  8. }
Daria error es mejor asi
Código PHP:
Ver original
  1. if(isset($_REQUEST['actividades']))
  2. {
  3. $coma = " OR tipo_ruta LIKE '%"
  4. $consulta = "";
  5. foreach ($_REQUEST['actividades'] as $actividad){
  6. $consulta .= $coma . $actividad . "%' ";
  7.  
  8. }
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #5 (permalink)  
Antiguo 27/11/2013, 11:01
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 13 años, 5 meses
Puntos: 3
Respuesta: Problemas para escapar comillas simples en una consulta

Tal cual se me paso lo de las comillas simples.!
  #6 (permalink)  
Antiguo 27/11/2013, 13:32
 
Fecha de Ingreso: julio-2009
Mensajes: 117
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Problemas para escapar comillas simples en una consulta

Cita:
Iniciado por xSkArx Ver Mensaje
Daria error es mejor asi
Código PHP:
Ver original
  1. if(isset($_REQUEST['actividades']))
  2. {
  3. $coma = " OR tipo_ruta LIKE '%"
  4. $consulta = "";
  5. foreach ($_REQUEST['actividades'] as $actividad){
  6. $consulta .= $coma . $actividad . "%' ";
  7.  
  8. }
De esa forma es exactamente igual pero a la inversa con las comillas.
  #7 (permalink)  
Antiguo 27/11/2013, 14:10
 
Fecha de Ingreso: julio-2009
Mensajes: 117
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Problemas para escapar comillas simples en una consulta

Ya esta solucionado, era la puñetera funcion mysqli_real_escape_string() la puse para que filtrase las etiquetas html y código malicioso que se pueda escribir y por eso me tenia despistado
  #8 (permalink)  
Antiguo 27/11/2013, 14:20
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 8 meses
Puntos: 96
Respuesta: Problemas para escapar comillas simples en una consulta

Si hubueses dicho que estabas usando mysql_real_escape_string() lo hubiesemos resuelto antes
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.

Etiquetas: comillas, escapar, simples
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:36.