Les bases de données sont partout et aucune application PHP pratique ne pourrait exister sans base de données. Depuis le tout début, PHP offre plusieurs façons de s'interfacer avec tous les SGBD populaires. Par exemple, deux méthodes populaires d'interface avec les bases de données basées sur MySQL sont mysql et mysqli.
Au fil des ans, les bases de données ont parcouru un long chemin et maintenant plusieurs fournisseurs différents proposent des SGBD populaires qui alimentent les applications PHP modernes. Pour normaliser et rationaliser les pratiques de développement, PHP a introduit PHP Data Objects (PDO) dans PHP 5.1. Ces objets sont utilisés pour configurer les connexions à la base de données PDO.
PDO est une couche d'accès à la base de données qui fournit une interface rapide et cohérente pour accéder et gérer les bases de données dans les applications PHP. Chaque SGBD possède un ou plusieurs pilotes PDO spécifiques qui doivent être installés lorsque vous utilisez PDO dans des applications PHP.
Bases de données prises en charge
Nom du piloteBase de données prise en charge
PDO_CUBRID | Cubrid |
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 d'appel d'Oracle |
PDO_ODBC | ODBC v3 (IBM DB2, unixODBC et win32 ODBC) |
PDO_PGSQL | PostgreSQL |
PDO_SQLITE | SQLite 3 et SQLite 2 |
PDO_SQLSRV | Microsoft SQL Server / SQL Azure |
PDO_4D | 4D |
Par défaut, PHP a installé le pilote PDO_SQLite. Cependant, si vous souhaitez travailler avec d'autres bases de données, vous devez d'abord installer le pilote correspondant.
afin de vérifier quels pilotes sont installés sur votre système, créez un nouveau fichier PHP et ajoutez-y l'extrait de code suivant :
<?php print_r(PDO::getAvailableDrivers()); ?>
Travailler avec PDO
PDO remplace toutes les approches d'interaction de base de données précédentes. En utilisant PDO, vous pouvez facilement effectuer des opérations CRUD et SGBD associées. En effet, PDO agit comme une couche qui sépare les opérations liées à la base de données du reste du code.
Vous pourriez également aimer : CRUD simple en PHP et MySQL
Connectivité
L'un des avantages les plus importants de PDO est la connectivité simple et très directe de la base de données. Considérez l'extrait de code suivant qui est utilisé pour configurer les connexions avec la base de données. Notez que lorsque le SGBD sous-jacent change, la seule modification que vous devez apporter est le type de base de données.
<?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; } } ?>
Dans l'extrait de code ci-dessus, notez que le SGBD est MySQL. Cependant, si le SGBD passe à MS SQL Server, le seul changement sera le remplacement de mysql avec mssql.
Remarque : PDO peut gérer les exceptions. Par conséquent, encapsulez toujours son opération dans un bloc try and catch.
Arrêtez de perdre du temps sur les serveurs
Cloudways gère la gestion des serveurs pour vous afin que vous puissiez vous concentrer sur la création d'applications géniales et sur la satisfaction de vos clients.
Commencez gratuitementCréer une table avec PDO
Pour créer une table, déclarez d'abord une chaîne de requête, puis exécutez-la avec exec fonctionner car aucune donnée ne sera renvoyée.
<?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(); } ?>
Insérer des données avec PDO
Pour insérer des données dans une table à l'aide de PDO, préparez d'abord la requête à l'aide de prepare déclaration. Ensuite, cette requête est exécutée avec la commande execute une fonction. Notez que cette pratique empêche les attaques par injection 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(); } ?>
Sélectionner des données avec PDO
Afin de sélectionner des données, créez d'abord une chaîne de requête, puis exécutez-la dans un pour chaque boucle pour récupérer les enregistrements de la table.
<?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(); } ?>
Mettre à jour les données avec PDO
Pour mettre à jour un enregistrement dans la table, déclarez d'abord une chaîne de requête, puis exécutez-la avec exec fonction.
<?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(); } ?>
Supprimer des données avec PDO
Pour supprimer un enregistrement de la table, déclarez d'abord une chaîne de requête, puis exécutez-la avec exec fonction.
<?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(); } ?>
Conclusion
PDO est la couche d'accès aux données qui facilite grandement le processus de connexion et d'utilisation des bases de données. Peut-être que la meilleure chose à propos de PDO est le processus rationalisé de migration de la base de données. Si vous souhaitez accélérer vos requêtes PDO avec des itérateurs, consultez cet article de Michelangelo van Dam.
Dans cet article, j'ai présenté PDO et souligné comment vous pouvez effectuer des actions CRUD en utilisant PDO en PHP. J'ai également démontré la configuration des connexions à la base de données PDO. Si vous avez des questions ou souhaitez ajouter à la discussion, laissez un commentaire ci-dessous.