PDO em PHP

Você sabia que é possível criar bases de dados e tabelas com PDO em PHP? Não é necessário conectar-se a um BD para realizar a conexão, somente precisamos do HOST ou IP do servidor, usuário e senha.

Por exemplo, em nosso artigo PDO em PHP, induzimos o usuário a conectar-se a servidor MySQL utilizando o HOST, base de dados, usuário e senha da seguinte maneira:

<?php
/* Variáveis PDO */
$base_dados = 'contatos';
$usuario_bd = 'user_db_contatos';
$senha_bd   = 'senha_db_contatos';
$host_db    = 'localhost';
$conexao_pdo = null;
 
/* Concatenação das variáveis para detalhes da classe PDO */
$detalhes_pdo = 'mysql:host=' . $host_db . ';dbname='. $base_dados;
 
// Tenta conectar
try {
    // Cria a conexão PDO com a base de dados
    $conexao_pdo = new PDO($detalhes_pdo, $usuario_bd, $senha_bd);
} catch (PDOException $e) {
    // Se der algo errado, mostra o erro PDO
    print "Erro: " . $e->getMessage() . "<br/>";
    // Mata o script
    die();
}
?>

Veja que acima estamos realizando uma conexão com um servidor PDO e já selecionando a base de dados. Mas e se ainda não tivermos uma base de dados pronta?

Vamos realizar uma conexão com o servidor sem selecionar uma base de dados para que você entenda:

<?php
/* Variáveis PDO */
$usuario_bd = 'root'; // Usuário da base de dados
$senha_bd   = ''; // Senha
$host_db    = 'localhost'; // Host
$conexao_pdo = null; // Nossa conexão PDO

/* Concatenação das variáveis para detalhes da classe PDO */
$detalhes_pdo = "mysql:host=$host_db;";

// Tenta conectar
try {
	// Cria a conexão PDO
	$conexao_pdo = new PDO($detalhes_pdo, $usuario_bd, $senha_bd);
} // try

// Se algo der errado
catch (PDOException $e) {
	// Se der algo errado, mostra o erro PDO
	print "Erro: " . $e->getMessage() . "<br/>";
   
	// Mata o script
	die();
} // catch
?>

Se criarmos um arquivo php com o código acima, podemos incluí-lo em qualquer outro arquivo e utilizar a variável “$conexao_pdo” para realizar comandos MySQL, como CREATE DATABASE, para criar bases de dados, ou CREATE TABLE para criar tabelas.

Se você não tem intimidade com esses comandos, leia nosso artigo:

Por exemplo:

<?php 
// Inclui o arquivo de conexão com o código descrito anteriormente
include('conexao.php');

// Nosso novo banco de dados
$bd = "minha_nova_base_de_dados";

// Cria o banco de dados e da permissão para nosso usuário no mesmo
$verifica = $conexao_pdo->exec(
    "CREATE DATABASE IF NOT EXISTS `$bd`;
    GRANT ALL ON `$bd`.* TO '$usuario_bd'@'localhost';
    FLUSH PRIVILEGES;"
);

// Verificamos se a base de dados foi criada com sucesso
if ( $verifica ) {
    echo 'Banco de dados criado com sucesso!';
} else {
    echo 'Falha ao criar banco de dados!';
}
?>

Você também pode executar um comando maior, inserindo uma tabela nesse banco de dados, por exemplo:

<?php 
// Inclui o arquivo de conexão com o código descrito anteriormente
include('conexao.php');

// Nosso novo banco de dados
$bd = "minha_nova_base_de_dados";

// Cria o banco de dados e da permissão para nosso usuário no mesmo
$verifica = $conexao_pdo->exec(
    "CREATE DATABASE IF NOT EXISTS `$bd`;
    GRANT ALL ON `$bd`.* TO '$usuario_bd'@'localhost';
    FLUSH PRIVILEGES;
    CREATE TABLE IF NOT EXISTS `$bd`.`minha_tabela` (
        cliente_id INT(11) NOT NULL AUTO_INCREMENT,
        cliente_nome VARCHAR(255),
        PRIMARY KEY ( cliente_id )
    )"
);

// Verificamos se a base de dados foi criada com sucesso
if ( $verifica ) {
    echo 'Comandos MySQL executados com sucesso!';
} else {
    echo 'Falha!';
}
?>

Veja que agora eu criei a base de dados (se ela não existir) e uma tabela (se ela não existir). Neste caso você só vai precisar executar o comando completo, ou seja, indicando a base de dados e a tabela da seguinte maneira:

CREATE TABLE IF NOT EXISTS `base_de_dados`.`tabela`;

Simples assim!