PDO c'est quoi?
PDO ( pour
PHP Data Object ) est une interface qui peut accéder à une base de données (
MySQL par exemple ) depuis PHP.
La classe PDO est orientée objet et existe depuis PHP 5.1.0
Activer PDO
Pour activer PDO assurez-vous que la ligne suivante est décommentée dans le fichier
php.ini
extension=php_pdo_mysql.dll
Table d'exemple pour PDO
Nous utiliserons les données suivantes pour les exemples:
| CREATE DATABASE IF NOT EXISTS monsiteweb; |
---|
| USE monsiteweb; |
---|
| DROP TABLE IF EXISTS visiteurs; |
---|
| CREATE TABLE visiteurs |
---|
| ( id int, adresse_ip varchar(255), date datetime ); |
---|
| DROP TABLE IF EXISTS users; |
---|
| CREATE TABLE users |
---|
| ( id int, nom varchar(255), adresse_ip varchar(255) ); |
---|
| INSERT INTO visiteurs (id, date, adresse_ip) |
---|
| VALUES |
---|
| ( "1", "2013-11-20 15:05:13", "5.20.4.96" ), |
---|
| ( "2", "2012-05-15 23:55:10", "105.12.3.6" ), |
---|
| ( "3", "2013-10-08 12:14:06", "52.24.23.3" ), |
---|
| ( "4", "2013-06-07 04:15:00", "36.45.25.204" ); |
---|
Connection à une base de données via PDO
<?php |
define("PDO_HOST", "localhost"); |
define("PDO_DBBASE", "monsiteweb"); |
define("PDO_USER", "root"); |
define("PDO_PW", ""); |
|
try{ |
$connection = new PDO( |
"mysql:host=" . PDO_HOST . ";". |
"dbname=" . PDO_DBBASE, PDO_USER, PDO_PW, |
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") ); |
} |
catch (PDOException $e){ |
print "Erreur !: " . $e->getMessage() . "<br/>"; |
die(); |
} |
?> |
Exécuter une requête SQL
La syntaxe pour exécuter une requête SQL est la suivante;
<?php |
$query = " UPDATE visiteurs SET date = ""; |
$r = $connection->query( $query ); |
?> |
QUOTE / sécurité
La méthode
Quote permet de sécuriser vos requêtes. En effet, il ne faut jamais faire confiance aux données qu'envoit
l'utilisateur, utiliser la méthode "quote" permet de sécuriser les données efficacement.
Exemple:
<?php |
$query = " UPDATE visiteurs SET date = " . $connection->quote( $data ) . "; |
$r = $connection->query( $query ); |
?> |
Préparer une requète SQL
Vous pouvez également préparer vos requetes pour éviter toute injection SQL :
<?php |
$query = " INSERT INTO visiteurs SET date = NOW(), nom = ?, adresse_ip = ? ; |
$data = array( "OLIVIER", "145.50.10.2" ); |
$sth = $connection->prepare( $query ); |
$sth->execute( $data ); |
?> |
SELECT
Exemple de code pour exécuter une requète et recevoir le résultat dans un tableau.
<?php |
$query = "SELECT * FROM visiteurs;"; |
$r = $connection->query( $query )->fetchAll(PDO::FETCH_ASSOC); |
var_dump( $r ); |
?> |
UNE QUESTION SUR L'ARTICLE?