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