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("SELECT 'USE la extensión mysqli en su lugar.' AS _msg FROM DUAL", $mysql);
$row = mysql_fetch_assoc($result);
echo $row['_msg'];
El ejemplo anterior mostrará:
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 ejemplo anterior mostrará:
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 ejemplo anterior mostrará:
Ver también
Anonymous ¶11 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.