PHP - Problema con cláusula WHERE y acentos

 
Vista:
Imágen de perfil de Rodrigo García

Problema con cláusula WHERE y acentos

Publicado por Rodrigo García (3 intervenciones) el 14/11/2015 19:14:38
Tengo una BD con una tabla llamada prueba, que contiene una sola columna y un dato:

nombre
María

Tengo el siguiente código PHP:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
$link = mysqli_connect(host,usuario,clave);
mysqli_select_db($link, bd);
mysqli_set_charset($link,"utf8");
$nom="María";
$query="SELECT nombre FROM prueba WHERE nombre='".$nom."'";
$result = mysqli_query($link, $query);
$extraido= mysqli_fetch_array($result);
echo("nombre=".$extraido['nombre']);
mysqli_free_result($result);
mysqli_close($link);
?>

Con ese código pretendo obtener el dato de la columna nombre que coincide con el string "María". Sin embargo, al ejecutarlo, me devuelve un nombre vacío:

nombre=

Es decir, pareciera que no existiera el nombre María. Si ejecuto esa misma consulta en phpMyAdmin, funciona perfecto. Pero desde php no funciona. La BD y la columna nombre tienen cotejamiento utf8_bin (para distinguir caracteres con y sin acento). Pareciera que no se puede enviar una consulta a la BD desde php que incluya un WHERE que compare textos con acentos (lo extraño es que sí se puede desde phpMyAdmin, que está hecho precisamente en php).

¿Cómo puedo entonces hacer una consulta desde php que requiere filtrar por un texto con acentos?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con cláusula WHERE y acentos

Publicado por xve (6935 intervenciones) el 15/11/2015 10:03:00
Hola Rodrigo, puede ser por el acento??
Has probado con un nombre sin acentos?

En que charset estas trabajando en tu php, y que charset tienes definido en la tabla de MySQL?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con cláusula WHERE y acentos

Publicado por voreno (33 intervenciones) el 15/11/2015 11:49:12
Hola, acabo de probar tu consulta tal como lo tienes y funciona perfectamente. que no te devuelva nada es que estas haciendo mal la consulta o algo hay mal, si fuera por el cotejamiento te devolvería el acento mal codificado. Haz una cosa, lo has probado en una página limpia?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo García

Problema con cláusula WHERE y acentos

Publicado por Rodrigo García (3 intervenciones) el 15/11/2015 15:27:26
Hola, gracias por responder. Descubrí la causa: estaba trabajando en el editor del administrador de archivos del host, el cual guarda el php en formato ANSI y no UTF-8, mientras que la BD la tengo en UTF-8. Lo solucioné trabajando con Notepad++ codificando a UTF-8 y subiendo el archivo directamente al servidor con Filezilla, en vez de usar el editor online del host.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Rodrigo García

Problema con cláusula WHERE y acentos

Publicado por Rodrigo García (3 intervenciones) el 15/11/2015 15:26:02
Hola, gracias por responder. Sí probé con un nombre sin acentos y se reconoce perfectamente. Pero descubrí la causa: estaba trabajando en el editor del administrador de archivos del host, el cual guarda el php en formato ANSI y no UTF-8, mientras que la BD la tengo en UTF-8. Lo solucioné trabajando con Notepad++ codificando a UTF-8 y subiendo el archivo directamente al servidor con Filezilla, en vez de usar el editor online del host.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar