PHP Conectar a MySQL


PHP 5 y versiones posteriores recomiendan usar los siguientes métodos para conectarse a MySQL:

  • MySQLi extension("i" significa "improved")
  • PDO (PHP Data Objects)

En versiones anteriores de PHP usábamos la extensión MySQL. Pero esa extensión comenzó a desaconsejarse a partir de 2012.


¿Debo usar MySQLi o PDO?

Si necesitas una respuesta breve: "usa el que prefieras".

MySQLi y PDO tienen sus propias ventajas:

PDO se aplica a 12 bases de datos diferentes, MySQLi solo está orientado a la base de datos MySQL.

Por lo tanto, si tu proyecto necesita cambiar entre múltiples bases de datos, se recomienda usar PDO, así solo necesitas modificar la cadena de conexión y algunas consultas. Con MySQLi, si cambias de base de datos, necesitas reescribir todo el código, incluidas las consultas.

Ambos son orientados a objetos, pero MySQLi también ofrece una interfaz API.

Ambos admiten sentencias preparadas. Las sentencias preparadas pueden prevenir la inyección SQL, lo cual es muy importante para la seguridad de proyectos web.


Ejemplo de conexión a MySQL con MySQLi y PDO

En este capítulo y en los siguientes, usaremos las siguientes tres formas para demostrar cómo PHP opera MySQL:

  • MySQLi (Orientado a objetos)
  • MySQLi (Orientado a procedimientos)
  • PDO

Instalación de MySQLi

Linux y Windows: la extensión MySQLi suele instalarse automáticamente al instalar el paquete php5 mysql.

Para obtener detalles de instalación, consulta: http://php.net/manual/en/mysqli.installation.php

Puedes verificar si se instaló correctamente mediante phpinfo():


Instalación de PDO

Para obtener detalles de instalación, consulta: http://php.net/manual/en/pdo.installation.php

Puedes verificar si se instaló correctamente mediante phpinfo():


Conectar a MySQL

Antes de acceder a la base de datos MySQL, necesitamos conectarnos primero al servidor de base de datos:

Ejemplo (MySQLi - Orientado a objetos)

<?php $servername = "localhost"; $username = "username"; $password = "password"; //Crear conexión $conn = new mysqli($servername, $username, $password); //Comprobar conexión if ($conn->connect_error) { die("Error de conexión:" . $conn->connect_error); } echo "Conexión exitosa"; ?>

Note Nota: en el ejemplo orientado a objetos anterior, $connect_error se agregó en PHP 5.2.9 y 5.3.0. Si necesitas compatibilidad con versiones anteriores, usa el siguiente código para reemplazarlo:

// Comprobar conexión
if (mysqli_connect_error()) {
die("Error de conexión a la base de datos: " . mysqli_connect_error());
}

Ejemplo (MySQLi - Orientado a procedimientos)

<?php $servername = "localhost"; $username = "username"; $password = "password"; //Crear conexión $conn = mysqli_connect($servername, $username, $password); //Comprobar conexión if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "Conexión exitosa"; ?>


Ejemplo (PDO)

<?php $servername = "localhost"; $username = "username"; $password = "password"; try { $conn = new PDO("mysql:host=$servername;", $username, $password); echo "Conexión exitosa"; } catch(PDOException $e) { echo $e->getMessage(); } ?>

Note Nota: en el ejemplo de PDO anterior ya hemos especificado la base de datos (myDB). PDO necesita establecer el nombre de la base de datos durante el proceso de conexión. Si no se especifica, se lanzará una excepción.


Cerrar la conexión

La conexión se cerrará automáticamente después de que el script termine de ejecutarse. También puedes usar el siguiente código para cerrar la conexión:

Ejemplo (MySQLi - Orientado a objetos)

$conn->close();


Ejemplo (MySQLi - Orientado a procedimientos)

mysqli_close($conn);


Ejemplo (PDO)

$conn = null;

Otras extensiones