Interface dupla, procedural e orientada a objetos

A extensão mysqli possibilita uma dupla interface. Ela suporta o paradigma de programação procedural e orientada a objetos.

UsuĂĄrios que estĂŁo migrando da extensĂŁo antiga mysql podem preferir a interface procedural. Esta interface Ă© similar Ă quela da extensĂŁo antiga mysql. Em muitos casos, os nomes das funçÔes diferem apenas pelo prefixo. Algumas funçÔes mysqli levam um manipulador de conexĂŁo como seu primeiro argumento, enquanto as funçÔes anĂĄlogas na antiga interface mysql levam este manipulador como o Ășltimo argumento, opcional.

Exemplo #1 Migração fåcil da antiga extensão mysql

<?php
$mysqli
= mysqli_connect("example.com", "user", "password", "database");
$result = mysqli_query($mysqli, "SELECT 'Por favor nĂŁo use a extensĂŁo mysql descontinuada para novos desenvolvimentos. ' 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 a extensĂŁo mysqli em seu lugar.' AS _msg FROM DUAL", $mysql);
$row = mysql_fetch_assoc($result);
echo
$row['_msg'];

O exemplo acima produzirĂĄ:

Por favor nĂŁo use a extensĂŁo mysql descontinuada para novos desenvolvimentos. Use a extensĂŁo mysqli em seu lugar.

A interface orientada a objetos

Em adição Ă  clĂĄssica interface procedural, usuĂĄrios podem escolher usar a interface orientada a objetos. A documentação estĂĄ organizada utilizando a interface orientada a objetos. Ela mostra funçÔes agrupadas por propĂłsito, tornando a iniciação mais fĂĄcil. A seção de referĂȘncia dĂĄ exemplos para ambas as variantes de sintaxe.

NĂŁo hĂĄ diferenças significativas de desempenho entre as duas interfaces. UsuĂĄrios podem basear suas escolhas em preferĂȘncias pessoais.

Exemplo #2 Interface orientada a objeto e procedural

<?php

$mysqli
= mysqli_connect("example.com", "user", "password", "database");

$result = mysqli_query($mysqli, "SELECT 'Um mundo cheio 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 'escolhas para agradar a todos.' AS _msg FROM DUAL");
$row = $result->fetch_assoc();
echo
$row['_msg'];

O exemplo acima produzirĂĄ:

Um mundo cheio de escolhas para agradar a todos.

A interface orientada a objetos Ă© usada neste guia porque a seção de referĂȘncia estĂĄ organizada dessa forma.

Misturando estilos

É possĂ­vel trocar de estilos a qualquer momento. Misturar ambos os estilos nĂŁo Ă© recomendado por questĂ”es de clareza e estilo de cĂłdigo.

Exemplo #3 Estilo de cĂłdigo ruim

<?php

$mysqli
= new mysqli("example.com", "user", "password", "database");

$result = mysqli_query($mysqli, "SELECT 'Estilo possível, porém, ruim.' AS _msg FROM DUAL");

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

O exemplo acima produzirĂĄ:

Estilo possível, porém, ruim.

Veja também

adicionar nota

Notas de UsuĂĄrios 1 note

up
33
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.