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.

Example #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 defasada 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 defasada 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.

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

Example #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