Pues la verdad es que desconozco si SQL tiene alguna función para codificar los carácteres en las consultas (me atrevería a decir que no). Pero hasta la fecha, y por lo que se plantea muchas veces en el foro, esto se soluciona como he comentado.
Como comentas, es correcta la consulta que realiza ahora mismo, pues se codifica en las dos direcciones.
Por ejemplo:
Guardas
Páco a través del form.
En la base de datos se guarda
Páco
Al consultar con PHP vuelve a codificar y muestra
Páco
Pero si consultas directamente a la DB mostrará
Páco
Con la función de PHP, como comentaba, sería de la siguiente forma:
Del form recibimos la variable
Código PHP:
Ver original// Variable recibida
$_POST['name'] = 'Páco';
// La pasamos por la función
// Realizas las validaciones pertinentes
// La variable $name se pasa al INSER INTO
Al consultar con PHP se hace de forma similar.
Código PHP:
Ver original// Codificamos las variables del array
$query = "SELECT bla bla bla"
// Edito: Había puesto decode tambien, es encode...
$echo $codificada;
Esto debería mostrar
Páco, que es el valor que está en la Db
Si revisamos la DB, podemos ver que ha guardado el valor tal cual se escribió. Y si se hace una consulta directamente a la db, mostrará el valor real que en la db, que será
Páco.
No se si es exactamente lo que buscas, pero me temo que van por ahí los tiros.
Un saludo,