- Este módulo surgiu a partir da versão 5 de PHP. PDO, portanto, é uma interface que define um conjunto de classes e a assinatura dos métodos de comunicação com uma base de dados.
Por que usar PDO
- Antes da chegada do PDO, a linguagem PHP oferecia suporte à comunicação com diferentes modelos de SGBD através de módulos específicos.
- A maioria deles provia uma biblioteca de funções e utilizava um resource para representar a conexão e outro para representar um resultset (o resultado de uma consulta). As operações eram feitas sobre as variáveis de resource.
- Cada driver implementava suas operações conforme imaginavam ser mais adequados. Embora alguns deles tivessem um funcionamento semelhante, a ordem dos parâmetros nem sempre era a mesma e podia causar uma certa confusão entre programadores.
Como conectar a um banco MySQL usando PDO
- Testando a conexão
<?php $banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password')or print (mysql_error()); print "Conexão Efetuada com sucesso!"; ?>
- Incluir dados
<?php $banco = new PDO('mysql:host=localhost;dbname=nome_do_banco', 'username','password'); $novo_cliente = array('nome'=>'José','departamento'=>'TI','unidade'=>'Paulista'); $banco->prepare('INSERT INTO clientes (nome,departamento,unidade) VALUES (:nome,:departamento,:unidade)')->execute($novo_cliente); ?>
Pesquisar dados em base MySQL utilizando querys simples e stored procedures
- Neste exemplo, é possível efetuar pesquisas em bases MySQL utilizando querys e stored procedures. Lembrando que para evitar conflitos, teste sua procedure antes de implementá-la em sua aplicação.
<?php //Dados de acesso $host = "Nome_do_Host"; $dbn = "Nome_da_Base"; $user = "Nome_do_Usuário"; $pass = "Senha_da_Base"; $tabela = "Nome_da_Tabela"; try { //Conectar $ligacao = new PDO("mysql:dbname=$dbn; host=$host", $user, $pass); $ligacao->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //Em caso de pesquisas, via procedures //$pesq = ""; //$sql = "CALL Nome_da_procedure()"; //Em caso de querys $pesq = "Nome_do_Campo"; $sql = "SELECT * FROM $tabela WHERE nome= :nome_param"; $resultados = $ligacao->prepare($sql); //Definição de parâmetros $resultados->bindParam(":nome_param", $pesq, PDO::PARAM_STR); $resultados->execute(); echo'<p>'.$sql.'</p><hr>'; foreach($resultados as $linha) { echo '<p>'; //Nome do campo na tabela pesquisada echo $linha["Nome_da_Coluna"]; echo '</p>'; } echo '<hr><p>Resultados: '.$resultados->rowCount().'</p>'; //Desconectar $ligacao = null; } catch(PDOException $erro) { echo $erro->getMessage(); } ?>
Conectar um banco SQL Server usando PDO
Windows
- Este exemplo funciona na versão 5.2 do PHP. Para utilização em servidores Windows 2008, há de alterar a versão do php via web.config tendo em vista que a versão padrão em windows 2008 é a PHP 5.3.
<?php try { $hostname = "sqlserver01.bancodedados.com"; $dbname = "nomebanco"; $username = "nomebanco"; $pw = "senha"; $pdo = new PDO ("mssql:host=$hostname;dbname=$dbname","$username","$pw"); } catch (PDOException $e) { echo "Erro de Conexão " . $e->getMessage() . "\n"; exit; } $query = $pdo->prepare("select Coluna FROM nome_tabela"); $query->execute(); for($i=0; $row = $query->fetch(); $i++){ echo $i." - ".$row['Coluna']."<br/>"; } unset($pdo); unset($query); ?>
Linux
<?php try { $hostname = "sqlserver01.bancodedados.com"; $dbname = "nomebanco"; $username = "nomebanco"; $pw = "senha"; $pdo = new PDO ("dblib:host=$hostname;dbname=$dbname","$username","$pw"); } catch (PDOException $e) { echo "Erro de Conexão " . $e->getMessage() . "\n"; exit; } $query = $pdo->prepare("select Coluna FROM nome_tabela"); $query->execute(); for($i=0; $row = $query->fetch(); $i++){ echo $i." - ".$row['Coluna']."<br/>"; } unset($pdo); unset($query); ?>
Como conectar a um banco SQLite3 via PDO
- Os seguintes passos demonstram como se conectar a um banco SQLite3, como criar tabelas, inserir dados e visualizar dados de uma tabela via PDO.
- Conectar à base
<?php //Atribui um novo objeto com o banco criado anteriormente //Supondo que o arquivo do banco de dados (banco.db) esteja ou será criado no mesmo diretório que o do php; //mas pode indicar um outro diretório também. //Ex: $db = new PDO("sqlite:~/public_hmtl/banco.db"); - conforme sua necessidade $db = new PDO("sqlite:banco.db") or die("Erro ao abrir a base"); ?>
- Criar tabelas
<?php $db = new PDO("sqlite:banco.db") or die("Erro ao abrir a base"); //cria a tabela $sqlC = "CREATE TABLE suporte ( id INTEGER PRIMARY KEY, nome TEXT)"; $db->exec($sqlC); ?>
- Inserir dados em uma tabela
<?php $db = new PDO("sqlite:banco.db") or die("Erro ao abrir a base"); //insere os dados $sqlI = "INSERT INTO suporte (id, nome) VALUES (NULL, 'Arielton Santos')"; $stmt = $db->exec($sqlI); ?>
- Visualizar dados de uma tabela
<?php $db = new PDO("sqlite:banco.db") or die("Erro ao abrir a base"); //visualiza foreach ($db->query("SELECT id, nome FROM suporte") as $row) { print_r($row); echo "<br>"; } ?>