Interfaces procedimentales y orientadas a objetos

La extensión mysqli proporciona 2 interfaces. Soporta la programación procedimental así como la programación orientada a objetos.

Los usuarios migrantes desde la antigua extensión mysql preferirán la interfaz procedimental. Esta interfaz es similar a la utilizada por la antigua extensión mysql. En la mayoría de los casos, los nombres de funciones solo difieren por sus prefijos. Algunas funciones mysqli toman un manejador de conexión como primer argumento, mientras que la función correspondiente de la antigua interfaz mysql lo tomaba como argumento opcional en última posición.

Ejemplo #1 Migración fácil desde la antigua extensión mysql

<?php

$mysqli
= mysqli_connect("example.com", "user", "password", "database");
$result = mysqli_query($mysqli, "SELECT 'No se debe usar la extensión mysql deprecada para nuevos desarrollos. ' AS _msg FROM DUAL");
$row = mysqli_fetch_assoc($result);
echo
$row['_msg'];

$mysql = mysql_connect("example.com", "user", "password");
mysql_select_db("test");
$result = mysql_query("USE la extensión mysqli en su lugar. AS _msg FROM DUAL", $mysql);
$row = mysql_fetch_assoc($result);
echo
$row['_msg'];

El resultado del ejemplo sería:

No se debe usar la extensión mysql deprecada para nuevos desarrollos. USE la extensión mysqli en su lugar.

La interfaz orientada a objetos

Además de la interfaz procedimental, los usuarios pueden elegir utilizar la interfaz orientada a objetos. La documentación está organizada utilizando esta interfaz. Muestra las funciones agrupadas por sus propósitos, facilitando el inicio de la programación. La sección de referencia proporciona ejemplos sobre las dos sintaxis.

No hay diferencia significativa en términos de rendimiento entre las dos interfaces. Los usuarios pueden hacer su elección según sus preferencias personales.

Ejemplo #2 Interfaces procedimentales y orientadas a objetos

<?php

$mysqli
= mysqli_connect("example.com", "user", "password", "database");
$result = mysqli_query($mysqli, "SELECT 'Un mundo lleno de ' AS _msg FROM DUAL");
$row = mysqli_fetch_assoc($result);
echo
$row['_msg'];

$mysqli = new mysqli("example.com", "user", "password", "database");
$result = $mysqli->query("SELECT 'opciones para complacer a todos.' AS _msg FROM DUAL");
$row = $result->fetch_assoc();
echo
$row['_msg'];

El resultado del ejemplo sería:

Un mundo lleno de opciones para complacer a todos.

La interfaz orientada a objetos se utiliza en el inicio rápido de la documentación debido a que la sección de referencia está organizada de esta manera.

Mezcla de estilos

Es posible cambiar de un estilo a otro en cualquier momento, aunque no se recomienda por razones de claridad y estilo de codificación.

Ejemplo #3 Malo estilo de codificación

<?php

$mysqli
= new mysqli("example.com", "user", "password", "database");
$result = mysqli_query($mysqli, "SELECT 'Posible pero mal estilo.' AS _msg FROM DUAL");

if (
$row = $result->fetch_assoc()) {
echo
$row['_msg'];
}

El resultado del ejemplo sería:

Posible pero mal estilo.

Ver también

add a note

User Contributed Notes 1 note

up
30
Anonymous
10 years ago
Just want to add that both procedural mysqli_connect_errno and mysqli_connect_error DON'T accept any arguments!
http://php.net/manual/de/mysqli.connect-errno.php
http://php.net/manual/de/mysqli.connect-error.php
"int mysqli_connect_errno ( void )"
"string mysqli_connect_error ( void )"
It clearly states "void" there.

Adding the mysqli-Instance as a parameter makes it look like it pulls the error-number out of the provided instance, which is not actually happening. This could end in a hard to detect bug when connecting to multiple SQL servers.
And it is confusing for beginners.
To Top