PHP Conectarse a MySQL
PHP 5 y versiones posteriores pueden funcionar con una base de datos MySQL usando:
- Extensión MySQLi (la "i" significa mejorado)
- PDO (objetos de datos PHP)
Las versiones anteriores de PHP usaban la extensión MySQL. Sin embargo, esta extensión quedó obsoleta en 2012.
¿Debo usar MySQLi o PDO?
Si necesitas una respuesta corta, sería "Lo que quieras".
Tanto MySQLi como PDO tienen sus ventajas:
PDO funcionará en 12 sistemas de bases de datos diferentes, mientras que MySQLi solo funcionará con bases de datos MySQL.
Entonces, si tiene que cambiar su proyecto para usar otra base de datos, PDO facilita el proceso. Solo tiene que cambiar la cadena de conexión y algunas consultas. Con MySQLi, deberá volver a escribir todo el código, incluidas las consultas.
Ambos están orientados a objetos, pero MySQLi también ofrece una API de procedimiento.
Ambos admiten declaraciones preparadas. Las declaraciones preparadas protegen contra la inyección de SQL y son muy importantes para la seguridad de las aplicaciones web.
Ejemplos de MySQL en la sintaxis de MySQLi y PDO
En este y en los siguientes capítulos demostramos tres formas de trabajar con PHP y MySQL:
- MySQLi (orientado a objetos)
- MySQLi (procedimiento)
- DOP
Instalación de MySQLi
Para Linux y Windows: La extensión MySQLi se instala automáticamente en la mayoría de los casos, cuando se instala el paquete php5 mysql.
Para detalles de instalación, vaya a: http://php.net/manual/en/mysqli.installation.php
Instalación de DOP
Para detalles de instalación, vaya a: http://php.net/manual/en/pdo.installation.php
Abrir una conexión a MySQL
Antes de que podamos acceder a los datos en la base de datos MySQL, debemos poder conectarnos al servidor:
Ejemplo (orientado a objetos de MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Nota sobre el ejemplo orientado a objetos anterior:
$connect_error se rompió hasta PHP 5.2.9 y 5.3.0. Si necesita garantizar la compatibilidad con las versiones de PHP anteriores a la 5.2.9 y la 5.3.0, use el siguiente código:
// Verifique la conexión
si (mysqli_connect_error()) {
die("La conexión a la base de datos falló: " . mysqli_connect_error());
}
Ejemplo (Procedimiento MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
Ejemplo (DOP)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
Nota: En el ejemplo de PDO anterior, también hemos especificado una base de datos (myDB) . PDO requiere una base de datos válida para conectarse. Si no se especifica ninguna base de datos, se lanza una excepción.
Sugerencia: un gran beneficio de PDO es que tiene una clase de excepción para manejar cualquier problema que pueda ocurrir en nuestras consultas a la base de datos. Si se lanza una excepción dentro del bloque try{ }, el script deja de ejecutarse y fluye directamente al primer bloque catch(){ }.
Cerrar la conexión
La conexión se cerrará automáticamente cuando finalice el script. Para cerrar la conexión antes, usa lo siguiente:
MySQLi orientado a objetos:
$conn->close();
Procedimiento MySQLi:
mysqli_close($conn);
DOP:
$conn = null;