Php nos da varias opciones para poder conectarnos a mysql, son las siguientes:

  • La extensión MySQL, obsoleta en PHP 5.5.0 y eliminada en PHP 7.0.0 (no usar)
  • La extensión MySQLi (la que usaremos en este ejemplo)
  • PDO (capa abstracta que permite realizar conexiones a varias bases de datos)
  • Otras: DBA, dbx, ODBC.

ATENCIÓN: Si utilizas la función mysql_connect() para conectarte a mysql estas usando código obsoleto, intenta en la medida de lo posible actualizarte

En este ejemplo vamos a utilizar la extensión MySQLi, ahora debemos escoger si utilizamos el estilo orientado a objetos o el estilo por procedimientos, dos formas de hacer lo mismo pero con pequeñas diferencias de sintaxis.

$mysqli = new mysqli('localhost', 'mi_usuario', 'mi_contraseña', 'mi_bd'); // Estilo orientado a objetos
$enlace = mysqli_connect('localhost', 'mi_usuario', 'mi_contraseña', 'mi_bd'); // Estilo por procedimientos

Por potencia y comodidad recomiendo el estilo orientado a objetos que va a ser la forma que seguiremos en este artículo.

A continuación un código de ejemplo para realizar la conexión a una base de datos mysql explicado con comentarios.

$host = 'localhost'; // La dirección de la base de datos, puede ser o un nombre de host o una dirección IP
$username = 'root'; // El usuario de la base de datos
$passwd = 'root'; // La contraseña del usuario
$dbname = 'demo'; // El esquema predeterminado para realizar las consultas

// Realizamos la conexión
$conexion = new mysqli($host, $username, $passwd, $dbname);
// Controlamos que la conexión no tenga errores
if($conexion->connect_error) { 
   error_log("Error de conexion a mysql: nº: $conexion->connect_errno, Error: $conexion->connect_error");
   throw new ErrorException("Error de conexion a mysql: nº: $conexion->connect_errno, Error: $conexion->connect_error");
}
// Especificamos el charset de la conexión, muy importante para que se vean correctamente todos los caracteres 
$conexion->set_charset("utf8");

// Ejecutamos una select en la base de datos
$resultadoSelect = $conexion->query("SELECT * FROM usuarios");
// Recorremos las filas 
while ($fila = $resultadoSelect->fetch_assoc()) {
   var_dump($fila); // Pintamos una fila
}