9/21/2009

Migrar de ISO-8859-1 a UTF-8 en MySQL

Útil para las migraciones

Estaba cambiando el encoding (de ISO-8859-1 a UTF-8) a una base de datos y al intentar guardar (con PHP) una vocal con acento o una "ñ" estas se guardaban con otros caracteres. Básicamente para solucionar este inconveniente hay que ejecutar la sentencia SET NAMES 'utf8' después de realizar la conexión y seleccionar la Base de Datos:
$enlace = @mysql_connect($host, $user, $pass);
@mysql_select_db($db_name, $enlace) or die(mysql_error());
@mysql_query("SET NAMES 'utf8'");
Y con esto solucionamos el problema de los caracteres extraños que nos generaba al guardar.

Les recomiendo leer los siguientes enlases:

9/10/2009

Obtener el total de registros en MySQL

Bastante útil cuando utilizamos paginadores

Cuando filtramos un SELECT con la clausula LIMIT en MySQL solo nos devolverá el numero de filas que definamos, al hacer esto no sabemos a ciencia cierta el total de filas que nos retornaría este query sin esta cláusula. Para solucionar esto agregamos después del SELECT la opción SQL_CALC_FOUND_ROWS, posteriormente podemos capturar el total de registros que nos entregaría este SELECT si no le asignamos el LIMIT.
SELECT SQL_CALC_FOUND_ROWS * FROM tabla WHERE id > 100 LIMIT 10;
Posterior a la ejecución del query anterior, ejecutamos este query, el cual nos devolverá un número que indica cuántas filas hubiese devuelto el primer SELECT.
SELECT FOUND_ROWS();
En la siguiente página hay más información al respecto