PHP Conectar ao MySQL
PHP 5 e posterior podem trabalhar com um banco de dados MySQL usando:
- Extensão MySQLi (o "i" significa melhorado)
- PDO (objetos de dados PHP)
Versões anteriores do PHP usavam a extensão MySQL. No entanto, esta extensão foi preterida em 2012.
Devo usar MySQLi ou PDO?
Se você precisar de uma resposta curta, seria "O que você quiser".
Tanto o MySQLi quanto o PDO têm suas vantagens:
O PDO funcionará em 12 sistemas de banco de dados diferentes, enquanto o MySQLi funcionará apenas com bancos de dados MySQL.
Portanto, se você precisar mudar seu projeto para usar outro banco de dados, o PDO facilita o processo. Você só precisa alterar a string de conexão e algumas consultas. Com o MySQLi, você precisará reescrever todo o código - consultas incluídas.
Ambos são orientados a objetos, mas o MySQLi também oferece uma API procedural.
Ambos suportam Declarações Preparadas. Declarações preparadas protegem contra injeção de SQL e são muito importantes para a segurança de aplicações web.
Exemplos MySQL em Sintaxe MySQLi e PDO
Neste, e nos capítulos seguintes, demonstramos três maneiras de trabalhar com PHP e MySQL:
- MySQLi (orientado a objetos)
- MySQLi (procedimento)
- DOP
Instalação do MySQLi
Para Linux e Windows: A extensão MySQLi é instalada automaticamente na maioria dos casos, quando o pacote php5 mysql é instalado.
Para detalhes de instalação, acesse: http://php.net/manual/en/mysqli.installation.php
Instalação do DOP
Para detalhes de instalação, acesse: http://php.net/manual/en/pdo.installation.php
Abra uma conexão com o MySQL
Antes de podermos acessar os dados no banco de dados MySQL, precisamos nos conectar ao servidor:
Exemplo (Orientado a Objetos MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Nota sobre o exemplo orientado a objetos acima:
$connect_error estava quebrado até o PHP 5.2.9 e 5.3.0. Se você precisar garantir a compatibilidade com versões do PHP anteriores a 5.2.9 e 5.3.0, use o seguinte código:
// Check connection
if (mysqli_connect_error()) {
die("Database connection failed: " . mysqli_connect_error());
}
Exemplo (procedimento MySQLi)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
Exemplo (DOP)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
Nota: No exemplo de PDO acima também especificamos um banco de dados (myDB) . O PDO requer um banco de dados válido para se conectar. Se nenhum banco de dados for especificado, uma exceção será lançada.
Dica: Um grande benefício do PDO é que ele possui uma classe de exceção para tratar quaisquer problemas que possam ocorrer em nossas consultas ao banco de dados. Se uma exceção for lançada no bloco try{ }, o script interromperá a execução e fluirá diretamente para o primeiro bloco catch(){ }.
Feche a conexão
A conexão será fechada automaticamente quando o script terminar. Para fechar a conexão antes, use o seguinte:
Orientado a Objetos MySQLi:
$conn->close();
Procedimento MySQLi:
mysqli_close($conn);
DOP:
$conn = null;