Foros del Web » Programando para Internet » PHP »

No ejecuta sentencia sql por ser caracter especial

Estas en el tema de No ejecuta sentencia sql por ser caracter especial en el foro de PHP en Foros del Web. Tengo el Siguiente codigo Código PHP: $bd_host  =  "localhost" ;  //el host $bd_usuario  =  "root" ;  //ususario de bd $bd_pass  =  "" ;   //contraseña de la bd $bd_base  =  "bd" ;  ...
  #1 (permalink)  
Antiguo 06/11/2013, 15:50
 
Fecha de Ingreso: enero-2013
Mensajes: 54
Antigüedad: 11 años, 3 meses
Puntos: 0
No ejecuta sentencia sql por ser caracter especial

Tengo el Siguiente codigo
Código PHP:
$bd_host "localhost"//el host
$bd_usuario "root"//ususario de bd
$bd_pass "";  //contraseña de la bd
$bd_base "bd"//nombre de la bd
$bd_port=""// este vacio
$conn_bd mysql_connect($bd_host,$bd_usuario,$bd_pass) or die("Error en la conexión a la base de datos");
    
mysql_select_db($bd_base$conn_bd);
    
    
    
$user=níño;
//$user="admin";
$user=(utf8_decode(htmlentities($user)));


    
$sql="SELECT * FROM usuarios WHERE user='$user'";
    
$result mysql_query($sql,$conn_bd);
    if (
mysql_num_rows($result)==1){
         
$usuario2=utf8_decode(htmlentities(mysql_result($result,0,"user")));;
    echo 
$usuario2;    
    }
    else
    {
        echo 
"No existe ese usuario";
        } 
Cuando intento dandole valor a la variable $user el valor da admin, si funciona, pero cuando le doy el valor de níño no ejecuta el $sql y por lo tanto me manda el mensaje diciendo que "No existe ese usuario" cuando se que si existe porque esta en la bd, estoy seguro que es por tener caracteres especiales, y el utf8_decode(htmlentities($user) si funciona, pero solo para imprimir, no con sql
Código PHP:
$sql="SELECT * FROM usuarios WHERE user='$user'"
  #2 (permalink)  
Antiguo 06/11/2013, 15: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: No ejecuta sentencia sql por ser caracter especial

¿Sabes exactamente lo que esto provoca?
Código PHP:
Ver original
  1. $user="niño";
  2. $user=utf8_decode(htmlentities($user));

Porque está claro (después de leer el manual) que la función htmlentities() convierte todo carácter especial a su versión de entidad, es decir, resulta así:
Cita:
niño
¿Si lo sabes verdad?

Bueno, pues dudo que en tu BD tengas un valor así, por eso no me extraña que no obtengas resultados pues arruinas los datos con los cuales se hace la consulta.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 06/11/2013, 16:43
 
Fecha de Ingreso: enero-2013
Mensajes: 54
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: No ejecuta sentencia sql por ser caracter especial

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Sabes exactamente lo que esto provoca?
Código PHP:
Ver original
  1. $user="niño";
  2. $user=utf8_decode(htmlentities($user));

Porque está claro (después de leer el manual) que la función htmlentities() convierte todo carácter especial a su versión de entidad, es decir, resulta así:


¿Si lo sabes verdad?

Bueno, pues dudo que en tu BD tengas un valor así, por eso no me extraña que no obtengas resultados pues arruinas los datos con los cuales se hace la consulta.
pero he probado con níño sin utf8_decode(htmlentities y tampoco funciona, y ese usuario si lo tengo, me aparece tal cual en la bd
  #4 (permalink)  
Antiguo 06/11/2013, 16:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: No ejecuta sentencia sql por ser caracter especial

Bueno, yo solo te he dicho que htmlentities() es la función que arruina tus datos, es posible que si necesites codificar/decodificar a UTF-8 y sobre todo, tu BD también debe estar codificada como UTF-8 para que todo ande bien.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/11/2013, 17:53
 
Fecha de Ingreso: enero-2013
Mensajes: 54
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: No ejecuta sentencia sql por ser caracter especial

Cita:
Iniciado por pateketrueke Ver Mensaje
Bueno, yo solo te he dicho que htmlentities() es la función que arruina tus datos, es posible que si necesites codificar/decodificar a UTF-8 y sobre todo, tu BD también debe estar codificada como UTF-8 para que todo ande bien.
a la hora de guardarlos los estaba guardando de esta manera
Código PHP:
$nombre=utf8_decode($_REQUEST["nombre"]);
$user=utf8_decode($_REQUEST["nombre"]);
$tipo=utf8_decode($_REQUEST["tipo"]); 
por lo cual ya no lo hice
Código PHP:
$user=$_REQUEST["nombre"]; 
y ahora se guarda así níño
nÃ*ño ,
no tengo problema que se guarde así, solo que a la hora del select me salga níño
  #6 (permalink)  
Antiguo 06/11/2013, 18:12
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: No ejecuta sentencia sql por ser caracter especial

Te sugiero buscar temas similares en el foro, el tema de codificación es bastante recurrente, no hace falta explicar una vez más las reglas del juego.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: caracteres, ejecuta, especiales, sql
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 02:28.