Os bancos de dados estão em toda parte e não há aplicativo PHP prático que possa existir sem um banco de dados. Desde o início, o PHP oferece várias formas de interface com todos os DBMS populares. Por exemplo, duas formas populares de interface com bancos de dados baseados em MySQL são mysql e mysqli.
Ao longo dos anos, os bancos de dados percorreram um longo caminho e agora vários fornecedores diferentes oferecem DBMS populares que alimentam aplicativos PHP modernos. Para padronizar e agilizar as práticas de desenvolvimento, o PHP introduziu o PHP Data Objects (PDO) no PHP 5.1. Esses objetos são usados para configurar conexões de banco de dados PDO.
O PDO é uma camada de acesso ao banco de dados que fornece uma interface rápida e consistente para acessar e gerenciar bancos de dados em aplicativos PHP. Cada SGBD possui drivers PDO específicos que devem ser instalados quando você estiver usando PDO em aplicativos PHP.
Bancos de dados compatíveis
Nome do driverBanco de dados suportado
PDO_CUBRID | Cubrido |
PDO_DBLIB | FreeTDS / Microsoft SQL Server / Sybase |
PDO_FIREBIRD | Firebird |
PDO_IBM | IBM DB2 |
PDO_INFORMIX | IBM Informix Dynamic Server |
PDO_MYSQL | MySQL 3.x/4.x/5.x |
PDO_OCI | Interface de chamada do Oracle |
PDO_ODBC | ODBC v3 (IBM DB2, unixODBC e win32 ODBC) |
PDO_PGSQL | PostgreSQL |
PDO_SQLITE | SQLite 3 e SQLite 2 |
PDO_SQLSRV | Microsoft SQL Server / SQL Azure |
PDO_4D | 4D |
Por padrão, o PHP possui o driver PDO_SQLite instalado. No entanto, se você deseja trabalhar com outros bancos de dados, você deve primeiro instalar o driver relevante.
para verificar quais drivers estão instalados em seu sistema, crie um novo arquivo PHP e adicione o seguinte trecho de código a ele:
<?php print_r(PDO::getAvailableDrivers()); ?>
Trabalhando com PDO
O PDO substitui todas as abordagens anteriores de interação com o banco de dados. Usando o PDO, você pode facilmente executar CRUD e operações de DBMS relacionadas. Na verdade, o PDO atua como uma camada que separa as operações relacionadas ao banco de dados do restante do código.
Você também pode gostar de: CRUD simples em PHP e MySQL
Conectividade
Um dos benefícios mais importantes do PDO é a conectividade de banco de dados simples e muito direta. Considere o seguinte trecho de código que é usado para configurar conexões com o banco de dados. Observe que quando o DBMS subjacente é alterado, a única alteração que você precisa fazer é o tipo de banco de dados.
<?php Class Connection { private $server = "mysql:host=localhost;dbname=cloudways"; private $user = "root"; private $pass = ""; private $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,); protected $con; public function openConnection() { try { $this->con = new PDO($this->server, $this->user,$this->pass,$this->options); return $this->con; } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } } public function closeConnection() { $this->con = null; } } ?>
No trecho de código acima, observe que o DBMS é MySQL. No entanto, se o DBMS for alterado para MS SQL Server, a única alteração será a substituição do mysql com mssql.
Observação: O PDO pode lidar com exceções. Portanto, sempre envolva sua operação em um bloco try and catch.
Pare de perder tempo com servidores
A Cloudways cuida do gerenciamento de servidores para você, para que você possa se concentrar na criação de ótimos aplicativos e manter seus clientes satisfeitos.
Comece grátis
Criando uma tabela com PDO
Para criar uma tabela, primeiro declare uma string de consulta e execute-a com exec função, pois nenhum dado será retornado.
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); // sql to create table $sql = "CREATE TABLE `Student` ( `ID` INT NOT NULL AUTO_INCREMENT , `name`VARCHAR(40) NOT NULL , `last_ame` VARCHAR(40) NOT NULL , `email` VARCHAR(40)NOT NULL , PRIMARY KEY (`ID`)) "; // use exec() because no results are returned $db->exec($sql); echo "Table Student created successfully"; $database->closeConnection(); } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
Inserindo dados com PDO
Para inserir dados em uma tabela usando PDO, primeiro prepare a consulta usando prepare demonstração. Em seguida, esta consulta é executada com o comando execute função. Observe que essa prática evita ataques de injeção de SQL.
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); // inserting data into create table using prepare statement to prevent from sql injections $stm = $db->prepare("INSERT INTO student (ID,name,last_name,email) VALUES ( :id, :name, :lastname, :email)") ; // inserting a record $stm->execute(array(':id' => 0 , ':name' => 'Saquib' , ':lastname' => 'Rizwan' , ':email' => '[email protected]')); echo "New record created successfully"; } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
Selecionar dados com PDO
Para selecionar dados, primeiro crie uma string de consulta e execute-a em um para cada loop para buscar registros da tabela.
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); $sql = "SELECT * FROM student " ; foreach ($db->query($sql) as $row) { echo " ID: ".$row['ID'] . "<br>"; echo " Name: ".$row['name'] . "<br>"; echo " Last Name: ".$row['last_name'] . "<br>"; echo " Email: ".$row['email'] . "<br>"; } } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
Atualizar dados com PDO
Para atualizar um registro na tabela, primeiro declare uma string de consulta e depois execute-a com exec função.
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); $sql = "UPDATE `student` SET `name`= 'yourname' , `last_name` = 'your lastname' , `email` = 'your email' WHERE `id` = 8" ; $affectedrows = $db->exec($sql); if(isset($affectedrows)) { echo "Record has been successfully updated"; } } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
Excluir dados com PDO
Para excluir um registro da tabela, primeiro declare uma string de consulta e execute-a com exec função.
<?php include_once 'connection.php'; try { $database = new Connection(); $db = $database->openConnection(); $sql = "DELETE FROM student WHERE `id` = 8" ; $affectedrows = $db->exec($sql); if(isset($affectedrows)) { echo "Record has been successfully deleted"; } } catch (PDOException $e) { echo "There is some problem in connection: " . $e->getMessage(); } ?>
Conclusão
PDO é a camada de acesso a dados que facilita muito o processo de conexão e trabalho com bancos de dados. Talvez a melhor coisa sobre o PDO seja o processo simplificado de migração de banco de dados. Se você quiser acelerar suas consultas PDO com iteradores, confira este artigo de Michelangelo van Dam.
Neste artigo, apresentei o PDO e destaquei como você pode executar ações CRUD usando o PDO em PHP. Também demonstrei a configuração de conexões de banco de dados PDO. Se você tiver dúvidas ou gostaria de adicionar à discussão, deixe um comentário abaixo.