La extensión mysqli ofrece una interfaz dual. Soporta el paradigma de programación procedimental y el orientado a objetos.
Los usuarios que migren desde la extensión mysql antigua pueden preferir la interfaz procedimental. Esta interfaz es similar a la de la extensión antigua de mysql. En la mayoría de los casos, los nombres de funciones difieren únicamente por el prefijo. Algunas funciones de mysqli toman como primer argumento un gestor de conexión, mientras que las funciones similares de la antigua interfaz de mysql lo toman como el último argumento opcional.
Ejemplo #1 Migración sencilla desde la antigua extensión mysql
<?php
$mysqli = mysqli_connect("ejemplo.com", "usuario", "contraseña", "basedatos");
$resultado = mysqli_query($mysqli, "SELECT 'Por favor, no use ' AS _msg FROM DUAL");
$fila = mysqli_fetch_assoc($resultado);
echo $fila['_msg'];
$mysql = mysql_connect("ejemplo.com", "usuario", "contraseña");
mysql_select_db("test");
$resultado = mysql_query("SELECT 'la extensión mysql para nuevos desarrollos.' AS _msg FROM DUAL", $mysql);
$fila = mysql_fetch_assoc($resultado);
echo $fila['_msg'];
?>
El resultado del ejemplo sería:
Por favor, no use la extensión mysql para nuevos desarrollos.
La interfaz orientada a objetos
Además de la clásica interfaz procedimental, los usuarios pueden optar por usar la interfaz orientada a objetos. La documentación está organizada según la interfaz orientada a objetos. Esta interfaz muestra las funciones agrupadas por su propósito, haciendo más fácil los comienzos. La sección de referencia proporciona ejemplos para ambas variantes de sintaxis.
No existen diferencias significativas de rendimiento entre las dos interfaces. Los usuarios puede basar su elección en sus preferencias personales.
Ejemplo #2 Interfaz orientada a objetos y procedimental
<?php
$mysqli = mysqli_connect("ejemplo.com", "usuario", "contraseña", "basedatos");
if (mysqli_connect_errno($mysqli)) {
echo "Fallo al conectar a MySQL: " . mysqli_connect_error();
}
$resultado = mysqli_query($mysqli, "SELECT 'Un mundo lleno de ' AS _msg FROM DUAL");
$fila = mysqli_fetch_assoc($resultado);
echo $fila['_msg'];
$mysqli = new mysqli("ejemplo.com", "usuario", "contraseña", "basedatos");
if ($mysqli->connect_errno) {
echo "Fallo al conectar a MySQL: " . $mysqli->connect_error;
}
$resultado = $mysqli->query("SELECT 'elecciones para complacer a todos.' AS _msg FROM DUAL");
$fila = $resultado->fetch_assoc();
echo $fila['_msg'];
?>
El resultado del ejemplo sería:
Un mundo lleno de elecciones para complacer a todos.
Se usa la interfaz orientada a objetos en el inicio rápido porque la sección de referencia está organizada de esta manera.
Mezclar estilos
Es posible cambiar entre los estilos en cualquier momento. No se recomienda mezclar los dos estilos por razones de claridad y estilo de código.
Ejemplo #3 Estilo de codificación malo
<?php
$mysqli = new mysqli("ejemplo.com", "usuario", "contraseña", "basedatos");
if ($mysqli->connect_errno) {
echo "Fallo al conectar a MySQL: " . $mysqli->connect_error;
}
$resultado = mysqli_query($mysqli, "SELECT 'Estilo malo pero posible.' AS _msg FROM DUAL");
if (!$resultado) {
echo "Fallo al ejecutar la consulta: (" . $mysqli->errno . ") " . $mysqli->error;
}
if ($fila = $resultado->fetch_assoc()) {
echo $fila['_msg'];
}
?>
El resultado del ejemplo sería:
Estilo malo pero posible.
Véase también