0

Lo primero que tengo que decir es que soy bastante novato en esto de programar con PHP. Tengo una tabla en una base de datos MySQL 5.7 de la que quiero obtener los registros que incluyen en un campo una cadena con los caracteres que aparecen en la siguiente instrucción:

$sentencia_sql = "SELECT definicion FROM diccionario where definicion like '• —' order by entrada";

Esta query me devuelve registros si la ejecuto desde el phpMyAdmin pero el programa PHP no recupera nada y estoy convencido de que tiene que ver con la codificación de dichos caracteres, pero no sé qué tengo que incluir en mi programa para que se reconozcan dichos caracteres. Si en vez de buscar esa cadena busco otra más "normal"(por ejemplo '* -' ) sí la encuentra.

Agradecería cualquier ayuda. Seguro que alguien con más experiencia sabe cómo resolver este tema.

asdelacruz
  • 55
  • 8
  • Puedes indicar el código Php que estás utilizando. La sentencia sql, en el like, puedes hacer definicion like '%._%' – Vicent Jul 29 '21 at 09:19
  • Si haces `echo '• —';` ¿se ve bien? – Sal Jul 29 '21 at 10:43
  • Haciendo un echo sí se ven esos caracteres. Tanto si hago el echo directamente como si lo hago a través de una variable. El problema es como si no llegara esa cadena en la comunicación con la base de datos, – asdelacruz Jul 29 '21 at 11:35
  • Revisa [esta pregunta](https://es.stackoverflow.com/q/59489/29967). En las respuestas dadas se trata de resolver el problema de la codificación de caracteres en todos los niveles. – A. Cedano Jul 29 '21 at 13:44

1 Answers1

0

Al final conseguí resolver el problema incluyendo las siguientes sentencias tras hacer la conexión a la base de datos:

$mysqli = new mysqli($host_name, $user_name, $password, $database);
$mysqli->query("SET CHARACTER SET utf8");
$mysqli->query('SET NAMES "utf8" COLLATE "utf8_general_ci"');
asdelacruz
  • 55
  • 8