Usando as Extensões PHP MySQL (mysqlnd, mysqli, PDO) no ServBay
O ServBay é um ambiente local de desenvolvimento web integrado e poderoso, que simplifica significativamente a interação de aplicações PHP com o banco de dados. Todas as versões de PHP gerenciadas pelo ServBay vêm com as principais extensões do MySQL pré-instaladas e ativadas por padrão: mysqlnd
, mysqli
e PDO_MySQL
. Isso significa que você pode começar a interagir com bancos de dados MySQL ou MariaDB em seus projetos PHP sem a necessidade de configuração manual.
Extensões PHP MySQL disponíveis no ServBay
O ServBay inclui nativamente as três principais extensões MySQL no ambiente PHP, garantindo compatibilidade e desempenho:
- MySQL Native Driver (
mysqlnd
): Um driver nativo do PHP, servindo como biblioteca base paramysqli
ePDO_MySQL
, responsável pela comunicação entre o PHP e servidores MySQL/MariaDB; geralmente oferece melhor desempenho e gerenciamento de memória. - MySQLi (
mysqli
): A extensão MySQL Improved traz interfaces orientada a objetos e procedural para conectar-se a bancos de dados MySQL ou MariaDB, suportando recursos avançados como prepared statements, transações, procedures e múltiplas queries. - PDO MySQL (
PDO_MySQL
): O driver PDO para MySQL implementa a camada de abstração do PHP Data Objects (PDO), permitindo que desenvolvedores interajam com diversos bancos de dados (MySQL, MariaDB, PostgreSQL, SQLite, etc.) usando uma API unificada e portátil.
Estado de Ativação
No ServBay, as extensões mysqlnd
, mysqli
e PDO_MySQL
estão habilitadas por padrão em todas as versões do PHP. Você não precisa tomar nenhuma ação adicional para ativá-las. O ServBay já configura automaticamente o php.ini
para que você possa utilizá-las diretamente no seu código para conectar-se ao banco de dados.
Detalhes das Extensões PHP MySQL
Compreender as diferenças entre essas três extensões ajuda a escolher a melhor opção para cada projeto:
MySQL Native Driver (
mysqlnd
)- Função principal: O
mysqlnd
é um driver nativo do PHP escrito em C, que atua como base da comunicação entre PHP e servidores de banco de dados MySQL/MariaDB. - Características: Desde o PHP 5.3, o
mysqlnd
se tornou o padrão sob as extensõesmysqli
ePDO_MySQL
, rodando diretamente dentro do PHP, dispensando o uso de bibliotecas externas comolibmysqlclient
. - Vantagens: Em relação ao antigo
libmysqlclient
, omysqlnd
traz melhor performance, uso eficiente de memória e suporte para recursos avançados como consultas assíncronas, conexões persistentes otimizadas e uma API rica de plugins. Geralmente você não irá interagir diretamente com a API domysqlnd
, mas sim usufruir de seus benefícios viamysqli
ouPDO
.
- Função principal: O
MySQLi (
mysqli
)- Função principal: Destinada ao MySQL (4.1.3+) e MariaDB, esta extensão se destaca pela integração direta com esses bancos no PHP.
- Características: Disponibiliza interfaces procedural e orientada a objetos. Oferece suporte a prepared statements (imprescindíveis contra SQL Injection), controle de transações, procedures, execução de múltiplas queries e outros recursos avançados.
- Vantagens: Rica em funcionalidades, projetada para desempenho e máxima compatibilidade com MySQL/MariaDB. Escolha robusta para projetos focados exclusivamente nesses bancos, especialmente quando se deseja utilizar recursos avançados.
PDO MySQL (
PDO_MySQL
)- Função principal: O PDO traz uma interface leve, consistente e multiplataforma para acesso a banco de dados. O
PDO_MySQL
é o driver PDO dedicado ao MySQL/MariaDB. - Características: Uso de uma API uniforme (
PDO
,PDOStatement
) para operar bancos; o uso de prepared statements (prepare()
eexecute()
) é obrigatório, elevando a segurança contra SQL Injection. Também suporta transações. - Vantagens: Portabilidade entre bancos de dados é o maior diferencial do PDO. Caso sua aplicação possa vir a utilizar PostgreSQL, SQLite ou outros bancos, migrar o código é muito mais simples. O PDO segue uma abordagem orientada a objetos, tornando o código mais limpo, seguro e fácil de manter. Em novos projetos, geralmente é a opção recomendada.
- Função principal: O PDO traz uma interface leve, consistente e multiplataforma para acesso a banco de dados. O
Exemplos PHP: Conectando e Operando com o Banco de Dados
Os exemplos a seguir demonstram como utilizar as extensões mysqli
e PDO
para conectar-se e manipular bancos MariaDB ou MySQL gerenciados pelo ServBay.
Pré-requisitos:
- Certifique-se que o serviço MySQL ou MariaDB está ativo no ServBay.
- Suponha que há um banco chamado
servbay_db
. - Suponha que existe um usuário
servbay_user
com senhayour_password
, devidamente autorizado a acessar o bancoservbay_db
. - Suponha que no banco
servbay_db
existe uma tabelausers
com as colunas:id
(INT, PK, AI),name
(VARCHAR),email
(VARCHAR),age
(INT).
Você pode usar o phpMyAdmin integrado do ServBay ou outros gerenciadores de banco para configurar tais recursos.
Exemplo de Código (modo mysqli
)
<?php
// --- Exemplo com mysqli ---
// Parâmetros de conexão
$servername = "127.0.0.1"; // ou 'localhost'
$port = 3306; // Porta padrão do MySQL/MariaDB no ServBay
$username = "servbay_user";
$password = "your_password"; // Substitua pela sua senha real
$dbname = "servbay_db";
// Cria conexão mysqli (modo orientado a objetos)
$conn = new mysqli($servername, $username, $password, $dbname, $port);
// Verifica conexão
if ($conn->connect_error) {
die("mysqli Connection failed: " . $conn->connect_error);
}
echo "mysqli Connected successfully<br>";
// Inserindo dados (usando prepared statement para evitar SQL Injection)
$stmt = $conn->prepare("INSERT INTO users (name, email, age) VALUES (?, ?, ?)");
$name = "ServBay Demo";
$email = "[email protected]";
$age = 5;
// "ssi" - string, string, integer
$stmt->bind_param("ssi", $name, $email, $age);
if ($stmt->execute()) {
echo "mysqli: New record created successfully<br>";
} else {
echo "mysqli Error: " . $stmt->error . "<br>";
}
$stmt->close();
// Consultando dados
$sql = "SELECT id, name, email, age FROM users WHERE name = 'ServBay Demo'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "mysqli Queried data:<br>";
// Saída dos dados
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. " - Age: " . $row["age"]. "<br>";
}
} else {
echo "mysqli: 0 results found<br>";
}
// Fecha conexão
$conn->close();
?>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Exemplo de Código (modo PDO
)
<?php
// --- Exemplo com PDO ---
// Parâmetros de conexão
$host = '127.0.0.1'; // ou 'localhost'
$port = 3306; // Porta padrão do MySQL/MariaDB no ServBay
$dbname = 'servbay_db';
$username = 'servbay_user';
$password = 'your_password'; // Substitua pela sua senha real
$charset = 'utf8mb4';
// DSN (Data Source Name)
$dsn = "mysql:host=$host;port=$port;dbname=$dbname;charset=$charset";
// Configurações PDO
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Lança exceções em vez de warnings
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // Obtém arrays associativos por padrão
PDO::ATTR_EMULATE_PREPARES => false, // Usa prepared statements nativos
];
try {
// Cria instância PDO
$pdo = new PDO($dsn, $username, $password, $options);
echo "PDO Connected successfully<br>";
// Inserindo dados (usando prepared statement)
$sql = "INSERT INTO users (name, email, age) VALUES (:name, :email, :age)";
$stmt = $pdo->prepare($sql);
$name = 'ServBay PDO Demo';
$email = '[email protected]';
$age = 10;
// Bind e execução
$stmt->execute([
':name' => $name,
':email' => $email,
':age' => $age
]);
echo "PDO: New record created successfully<br>";
// Consultando dados
$stmt = $pdo->prepare("SELECT id, name, email, age FROM users WHERE name = :name");
$stmt->execute([':name' => 'ServBay PDO Demo']);
// Obtendo todos resultados
$users = $stmt->fetchAll(); // ASSOCIATIVO por padrão
if ($users) {
echo "PDO Queried data:<br>";
foreach ($users as $row) {
echo "id: " . $row['id'] . " - Name: " . $row['name'] . " - Email: " . $row['email'] . " - Age: " . $row['age'] . "<br>";
}
} else {
echo "PDO: 0 results found<br>";
}
} catch (\PDOException $e) {
// Captura e exibe erros de conexão ou consulta
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
// A conexão PDO normalmente é fechada ao fim do script, não sendo necessário chamar close()
// $pdo = null; // Pode ser definido manualmente como null para fechar explicitamente
?>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Onde colocar o código: Salve qualquer um dos exemplos acima com a extensão .php
(por exemplo, db_test_mysqli.php
ou db_test_pdo.php
) e coloque-o no diretório raiz do seu site do ServBay (por exemplo, /Applications/ServBay/www/meuprojeto/
). Em seguida, acesse pelo navegador usando a URL correspondente (ex.: http://meuprojeto.servbay.demo/db_test_mysqli.php
). Certifique-se de que seu site está corretamente configurado e rodando no ServBay.
Perguntas Frequentes (FAQ)
P: Preciso instalar manualmente as extensões MySQL do PHP no ServBay?
R: Não. O ServBay já traz todas as versões de PHP que gerencia com as extensões mysqlnd
, mysqli
e PDO_MySQL
pré-instaladas e ativadas por padrão. Você pode utilizá-las diretamente em seu código PHP, sem instalação ou configurações extras.
P: Entre mysqli
e PDO
, qual devo escolher?
R:
- Recomendamos
PDO
: Se seu aplicativo pode vir a usar diferentes bancos de dados (não só MySQL/MariaDB) ou se busca uma abordagem mais moderna, orientada a objetos e com maior portabilidade, escolha PDO. Ele também força o uso de prepared statements, resultando em código mais seguro. - Considere
mysqli
: Caso seu projeto utilize apenas MySQL/MariaDB e você precise de recursos avançados específicos desses bancos,mysqli
é robusto e apresenta ótima performance, além de oferecer interfaces procedural e orientada a objetos.
Para novos projetos, a recomendação geral é optar por PDO.
P: Como descubro os parâmetros para conectar meu PHP ao MySQL/MariaDB no ServBay?
R:
- Host: Normalmente, use
127.0.0.1
oulocalhost
. - Porta: O padrão para MySQL/MariaDB no ServBay costuma ser
3306
. Confirme o número exato na interface de gerenciamento de pacotes do ServBay. - Usuário / Senha: Utilize o usuário de banco criado manualmente. Se for sua primeira vez, crie um novo ou utilize
root
(não recomendado para produção). Gerencie usuários e permissões via phpMyAdmin integrado ou outro gerenciador. - Banco de Dados: Informe o nome do banco ao qual deseja se conectar.
P4: Tenho um projeto antigo usando as funções obsoletas mysql_*
. O ServBay dá suporte?
R: Sim. Para facilitar a manutenção ou migração de aplicações legadas, o ServBay inclui suporte às funções mysql_*
(como mysql_connect
) em seu ambiente PHP 5.6. Essas funções foram depreciadas no PHP 5.5 e removidas no PHP 7.0. Por meio do PHP 5.6 do ServBay, é possível rodar código dependente dessas funções, sem precisar buscar versões PHP ainda mais antigas.
ATENÇÃO, recomendações importantes:
- Utilize esse recurso apenas para compatibilidade temporária ou manutenção de projetos legados.
- Novos projetos ou sempre que for refatorar código antigo, migre para
mysqli
ouPDO
. As funçõesmysql_*
apresentam riscos de segurança (como SQL Injection) e não suportam recursos modernos dos bancos.
Conclusão
O ServBay simplifica drasticamente o processo de integração entre PHP e banco de dados ao pré-instalar e ativar por padrão as extensões mysqlnd
, mysqli
e PDO_MySQL
, além de fornecer suporte à antiga API mysql_*
no PHP 5.6 para projetos legados. Assim, não há preocupação com etapas complicadas de instalação ou configuração: basta escolher a extensão mais adequada ao seu projeto (recomendamos PDO ou mysqli) e conectar/operar facilmente bancos MySQL ou MariaDB no ambiente do ServBay.
Essa praticidade pronta para uso permite que você foque na lógica do seu aplicativo, aproveitando a estabilidade e eficiência do ambiente local fornecido pelo ServBay para desenvolver, testar e manter rapidamente seus serviços web.