viernes, 9 de agosto de 2013

10 errores que cometí como novato en PHP / MySQL

10 errores que cometí como novato en PHP / MySQL
PHP es un lenguaje que permite que novatos estén creando aplicaciones en poco tiempo, razón por la cual empecé a usarlo cuando empecé a programar de manera profesional.
En este artículo, hago un repaso de los 10 errores más importantes que cometí, para que puedas evitarlos en tu día a día.

1 - Usar las funciones MySQL de PHP

PHP provee funciones para trabajar con MySQL desde el primer día, a través de la extensión MySQL. A pesar de esto, el manual de PHP desaconseja su uso, ya que quedó vieja.
Para trabajar con MySQL es aconsejable utilizar la extensión MySQLi, la cual soporta:
  • orientación a objetos
  • declaraciones preparadas
  • transacciones y rollbacks

2 - No sanitizar los datos enviados por el usuario

Al principio uno es naif y no piensa que alguien le va a enviar datos basura... hasta que pasa. La regla debería ser "Nunca confiar en los datos enviados por el usuario".
Validando que sean del tipo de datos esperado, que estén dentro de un rango y verificando que no contengan caracteres inválidos; evitaremos problemas como: ataques por inyección de SQL o XSS.

3 - Usar MyISAM en lugar de InnoDB

Los motores más conocidos de MySQL son MyISAM e InnoDB. El primero se utiliza por defecto, pero generalmente es una elección equivocada. Si se necesitan transacciones, claves foráneas o bloqueos, es obligatorio elegir InnoDB. MyISAM debe usarse para casos donde predominen las consultas del tipo SELECT.
Para crear una tabla InnoDB se debe indicar el motor o el tipo en la consulta SQL:
-- de esta forma
CREATE TABLE clientes (a INT, b CHAR (20), INDEX (a)) ENGINE=InnoDB;

-- o de esta
CREATE TABLE clientes (a INT, b CHAR (20), INDEX (a)) TYPE=InnoDB;

4 - Usar PHP en lugar de SQL

Cuando uno sabe usar un martillo, todos los problemas tienen forma de clavo. Cuando uno aprende PHP y es novato con las bases de datos, es tentador resolver los problemas del lado del lenguaje. Esto lleva a un código lento e ineficiente. Las bases de datos pueden hacer más que sólo traer los datos, por lo cual, es importante aprender cómo funcionan.

5 - No usar UTF-8

UTF-8 es un formato de codificación de caracteres único e independiente del idioma y de la plataforma. Al usar UTF-8, toda persona que no hable nuestro idioma puede ver la página correctamente, en cambio al utilizar un set de caracteres diferentes, verá símbolos raros en los caracteres que su idioma no reconozca (como las vocales con acentos o la ñ).
Usar UTF-8 también sirve para que cualquier programa que lo utilice (no sólo navegadores) pueda interpretar bien el documento.

6 - Usar SELECT *

Devolver todas las columnas de una consulta es de programador vago. Las consultas SELECT sólo deben devolver las columnas que realmente necesitamos. La "performance" de toda la base de datos mejora cuando nuestras consultas son las correctas.

7 - No utilizar los tipos de datos correctos

MySQL ofrece varios tipos de datos para utilizar en las columnas. Lo mejor es aprender que la buena utilización de estos, hace que el motor funcione mejor, ahorre espacio y sea claro a la hora de codificar.
No usar strings para un campo DATETIME, no usar INT para un campo que sólo va a aceptar número pequeños.

8 - No utilizar stored procedures

En este artículo, ya hablé de lo importante que son los stored procedures (o procedimientos almacenados). No usarlos, es error de novato.

9 - No hacer backups

Esto se aplica a todo lo que tiene que ver con computadoras. Es raro, pero las mismas pueden fallar. Los discos rígidos pueden arruinarse. Nos pueden robar la notebook. El hosting nos puede eliminar el alojamiento.
Hacer copias de nuestros datos es algo que debería estar en nuestra vida diaria. Automatizar estos backups, nos ahorra mucho tiempo.

10 - No considerar otras bases de datos

MySQL es la base de datos más extendida entre los desarrolladores PHP y phpMyAdmin una de las herramientas principales para su administración. A pesar de esto, quizás no es lo mejor para nosotros.
Existen muchas herramientas para administrar MySQL (HeidiSQL, Toad, Navicat, etc.) y existen varias bases de datos con las que podemos trabajar (PostgreSQL, SQL Server, SQLite, etc.).
El abrir nuevos horizontes, nos permite aprender nuevas cosas.

Resumen

El cometer errores, significa que uno está haciendo cosas, por lo cual es normal que sucedan; cometerlos no es malo, lo malo es no aprender de ellos.