Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con & (Ampersand) al hacer consulta mysql

Estas en el tema de Problema con & (Ampersand) al hacer consulta mysql en el foro de PHP en Foros del Web. He estado mirando unas cuantas paginas de google y alguna que otra de este mismo foro, probando varios métodos, pero no funcionan :( Mi problema ...
  #1 (permalink)  
Antiguo 25/11/2014, 22:16
 
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Problema con & (Ampersand) al hacer consulta mysql

He estado mirando unas cuantas paginas de google y alguna que otra de este mismo foro, probando varios métodos, pero no funcionan :(

Mi problema es el siguiente, quiero comparar 2 tablas y saber si un campo existe en la otra y viceversa

Hago consulta a la tabla1 recibiendo muchas películas, una de ellas se llama "Juan & Lola: un titulo inventado"
y quiero comprobar si "Juan & Lola: un romance inventado" existe en la tabla2

El problema viene cuando llega a una película que contiene &, no hace bien la consulta ya que la película si que existe en las 2 tablas y debería devolverme que si que coincide, pero al contener & no lo hace :S, Con los acentos y comillas no hay problema :S

Código PHP:

         $sqlx 
"SELECT * FROM tabla1";

            
$rsx mysql_query($sqlx) or die(exit("fallo"));
            
            
            while(
$rowx=mysql_fetch_array($rsx)){
            
$id $rowx['id'];
            
$pelicula $rowx['pelicula']; 
            
            
            
              
$pelicula trim($pelicula);
              
$pelicula stripslashes($pelicula);
              
$pelicula htmlspecialchars($pelicula);
              
$pelicula addslashes($pelicula);
             
/////////////// AQUI  ESTA EL PROBLEMA 

            
$consulta="SELECT * FROM tabla2 WHERE pelicula='$pelicula'";
            
            
$resultado=mysql_query($consulta) or die (mysql_error());
                if (
mysql_num_rows($resultado)>0)
                {
                echo 
$id;
                echo 
'¡Existe en las 2 tablas! y el nombre es: ';
                if (
$row1 mysql_fetch_array($resultado)){ 
                      echo 
"".$row1["pelicula"]."<br>"; }            
                
                
                } else {

                                echo 
$id;
                echo 
': No existe la película: ';
                echo 
$pelicula;
                echo 
'En tabla2: ';
                
                }        
                
            

            } 


Necesito areglar esto, sin modificar/cambiar el nombre de la pelicula, no quiero pasarlo a &amp; o algo similar
  #2 (permalink)  
Antiguo 25/11/2014, 23:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con & (Ampersand) al hacer consulta mysql

El carácter & no es de ninguna manera especial así que no debería darte problemas.

Si no da resultados será porque no los habrá.

¿Estás 100% seguro que en la BD tienes el dato como & y no como algo más?

Vamos, que metiendo unos datos de prueba a mi me da la consulta perfecto, ¿qué podrá ser?

Porque vamos, error de código PHP no hay como para preguntar acá.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/11/2014, 07:23
 
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con & (Ampersand) al hacer consulta mysql

Cita:
Iniciado por pateketrueke Ver Mensaje
El carácter & no es de ninguna manera especial así que no debería darte problemas.

Si no da resultados será porque no los habrá.

¿Estás 100% seguro que en la BD tienes el dato como & y no como algo más?

Vamos, que metiendo unos datos de prueba a mi me da la consulta perfecto, ¿qué podrá ser?

Porque vamos, error de código PHP no hay como para preguntar acá.
Estoy 100% seguro, he buscado en las 2 tablas desde phpmyadmin y encuentra resultado en las 2 :S
  #4 (permalink)  
Antiguo 26/11/2014, 07:41
Avatar de solmedina87  
Fecha de Ingreso: noviembre-2014
Mensajes: 68
Antigüedad: 9 años, 5 meses
Puntos: 4
Respuesta: Problema con & (Ampersand) al hacer consulta mysql

A mi me daban problemas algunos strings y lo solucione poniendo la variable '".$variable."'

Por ejemplo aca:
Código PHP:
Ver original
  1. $consulta="SELECT * FROM tabla2 WHERE pelicula='$pelicula'";

proba
Código PHP:
Ver original
  1. $consulta="SELECT * FROM tabla2 WHERE pelicula='".$pelicula."'";
  #5 (permalink)  
Antiguo 26/11/2014, 07:56
 
Fecha de Ingreso: noviembre-2014
Mensajes: 34
Antigüedad: 9 años, 5 meses
Puntos: 0
Respuesta: Problema con & (Ampersand) al hacer consulta mysql

Esto tambien lo puedes arreglar transformando estos caracteres con str_replace si encuentra te lo saltas y listo.

No obstante puedes utilizar un like y todo lo que empiece por Juan

Select * from table where campo like '%Juan & lola%';

Las comillas influyen mucho a la hora de colocar la consulta.
  #6 (permalink)  
Antiguo 26/11/2014, 08:10
 
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con & (Ampersand) al hacer consulta mysql

He probado las 2, la de poner .$variable. y la de hacerlo mendiante LIKE, y da el mismo resultado, funciona con los demás, pero no con &

en realidad son juegos xD
Cuando sale el SI en verde, significa que si que esta en las 2 bases de datos, cuando sale el no y mas texto, no esta y me dice que juego NO esta y con que ID, pero que realmente si que esta! ya que estoy usando una copia de la tabla, estoy haciendo el sistema desde 0 y antes de seguir, me tiene que decir que todos los datos estan en las 2 tablas, una vez hecho esto borraria un dato de una tabla y me tendria que decir que X juego no esta

En la siguiente imagen si os fijais, la ID 227 Y 249 contienen acentos (PHP no lo muestra), pero a la hora de hacer la consulta funciona correctamente, de lo contrario diria que NO, PHP no lo muestra correctamente ya que es un php "interno" no es para que lo vea el publico

  #7 (permalink)  
Antiguo 26/11/2014, 08:47
 
Fecha de Ingreso: abril-2010
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con & (Ampersand) al hacer consulta mysql

Solucionado!

He cambiado:

Código PHP:
              $pelicula trim($pelicula); 
              
$pelicula stripslashes($pelicula); 
              
$pelicula htmlspecialchars($pelicula); 
              
$pelicula addslashes($pelicula); 
Código PHP:
             // $pelicula = trim($pelicula);
             // $pelicula = stripslashes($pelicula);
            //  $pelicula = htmlspecialchars($pelicula);
              
$pelicula addslashes($pelicula); 
Parece ser que con tanto filtro, se jodia el invento u.u

Etiquetas: ampersand, html, mysql, select, sql, tabla
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 00:45.