PHP, MySQL y UTF-8

Recientemente he tenido el problema de que los datos almacenados en MySQL no se guardaban correctamente. Me refiero a los datos con tilde, las eñes y demás caracteres similares. Lo que se me guardaba eran carácteres tales como estos:

áéíóúñ

La página web desde la que introducía los datos estaba codificaba en UTF-8, forzado con la cabecera:

header('Content-Type: text/html; charset=UTF-8');

La base de datos, la tabla y el campo correspondiente estaban como utf8_spanish_ci. Los datos insertados mediante el formulario web luego se visuualizaban  correctamente. Pero en la base de datos se almacenaban con otra codificación.

Buscando por Internet, encontré esta página donde explicaban la resolución a mi problema. Básicamente, éste residía en la clase mysqli de PHP, que requería especificar el charset correspondiente.

El código que no funcionaba era éste:

if (!($link = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname))){
   exit('Error al conectar a la base de datos.');
}
$sql = 'SELECT * FROM `mibd`.`mitabla`';
$result = mysqli_query($link, $sql);

Y lo cambié por este otro, que funcionaba perfectamente:

if (!($link = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname))){
   exit('Error al conectar a la base de datos.');
}
mysqli_set_charset($link, "utf8");
$sql = 'SELECT * FROM `mibd`.`mitabla`';
$result = mysqli_query($link, $sql);

Espero que le pueda ayudar a alguien.