Interfaz dual: procedimental y orientada a objetos

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