Différences entre versions de « Php pdo »
(Page créée avec « = Installation = == Les librairies == Pour développer en PHP et utiliser ''MySQL'', il ne faut pas oublier d'installer les librairies suivantes : <pre> # yum -y install ... ») |
|||
Ligne 45 : | Ligne 45 : | ||
== Accès base avec PDO == | == Accès base avec PDO == | ||
Pour accéder à une base de données ''MySQL'', on peut soit utiliser ''MySQLi'' soit utiliser ''PDO''. Préférez ''PDO'' qui permet plus de souplesse. | Pour accéder à une base de données ''MySQL'', on peut soit utiliser ''MySQLi'' soit utiliser ''PDO''. Préférez ''PDO'' qui permet plus de souplesse. | ||
− | Voici le code qui permet de se connecter à une base ''MySQL'' | + | Voici le code qui permet de se connecter à une base ''MySQL'': |
− | + | <pre> | |
+ | <?php | ||
+ | try{ | ||
+ | $db = new PDO('mysql:host=localhost;dbname=exemple', 'root', 'password'); | ||
+ | }catch(Exception $e){ | ||
+ | echo "Échec : " . $e->getMessage(); | ||
+ | } | ||
+ | ?> | ||
+ | </pre> | ||
+ | La variable ''$db'' contient la connexion base de données et si l'instanciation réussie, vous êtes connecté ! | ||
− | + | Nous allons centraliser tout ce qui est en relation avec la base de données dans le fichier ''php/db.php''. Copiez les lignes précédentes dans ce fichier et faite une inclusion dans le fichier index.php: | |
+ | <pre> | ||
+ | <html> | ||
+ | <head> | ||
+ | <title>Exemple d'utilisation de PDO</title> | ||
+ | </head> | ||
+ | <body> | ||
+ | <?php | ||
+ | include("php/db.php"); | ||
+ | ?> | ||
+ | <body> | ||
+ | <html> | ||
+ | </pre> | ||
+ | Si vous ne voyez pas de message d'erreur, la connexion s'est correctement effectuée ! | ||
+ | == Création des fonctions base == | ||
+ | Pour s’affranchir du ''CRUD'' nous allons agrémenter le fichier ''db.php'' des fonction suivantes: | ||
+ | <pre> | ||
+ | function getUsers($db){ | ||
+ | $select = $db->prepare('SELECT id, lname, fname, email FROM personnes'); | ||
+ | $select->execute(); | ||
+ | return $select->fetchAll(); | ||
+ | } | ||
+ | function getUserById($id, $db){ | ||
+ | $select = $db->prepare('SELECT id, lname, fname, email FROM personnes WHERE id='.$id); | ||
+ | $select->execute(); | ||
+ | return $select->fetchAll()[0]; | ||
+ | } | ||
+ | function addUser($lname, $fname, $email, $db){ | ||
+ | try{ | ||
+ | $insert=$db->prepare('INSERT INTO dc.personnes (lname, fname, email) VALUES(:lname, :fname, :email)'); | ||
+ | $insert->execute(array('lname' => $lname,'fname' => $fname,'email' => $email)); | ||
+ | echo "</br>Enregistrement ok !"; | ||
+ | }catch(Exception $e){ | ||
+ | echo $sql . "</br>" . $e->getMessage(); | ||
+ | } | ||
+ | } | ||
+ | function modifyUser($lname, $fname, $email, $id, $db){ | ||
+ | try{ | ||
+ | $insert=$db->prepare('UPDATE personnes SET lname=:lname, fname=:fname, email=:email WHERE id=:id'); | ||
+ | $insert->execute(array('lname' => $lname,'fname' => $fname,'email' => $email, 'id'=>$id)); | ||
+ | echo "</br>Enregistrement ok !"; | ||
+ | }catch(Exception $e){ | ||
+ | echo $sql . "</br>" . $e->getMessage(); | ||
+ | } | ||
+ | } | ||
+ | function delUser($id, $db){ | ||
+ | try{ | ||
+ | $sql = 'DELETE FROM personnes WHERE id='.$id.''; | ||
+ | $db->exec($sql); | ||
+ | }catch(Exception $e){ | ||
+ | echo $sql . "</br>" . $e->getMessage(); | ||
+ | } | ||
+ | } | ||
+ | </pre> |
Version du 2 novembre 2015 à 21:16
Installation
Les librairies
Pour développer en PHP et utiliser MySQL, il ne faut pas oublier d'installer les librairies suivantes :
# yum -y install php php-mysql mysql mysql-server httpd
Paramétrez votre base MySQL ainsi que votre serveur HTTPD.
Base de données exemple
Nous allons utiliser la base de données suivante:
-- -- Base de données: `exemple` -- CREATE DATABASE IF NOT EXISTS `exemple` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci; USE `exemple`; -- -------------------------------------------------------- -- -- Structure de la table `personnes` -- CREATE TABLE IF NOT EXISTS `personnes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `nom` varchar(100) NOT NULL, `prenom` varchar(100) NOT NULL, `email` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Développement
Structure du site
Nous allons créer un site web qui va utiliser notre base de données. Pour faire les chose bien, il faut respecter une certaine structure à l'intérieur de /var/www/html:
- php (dossier qui contient les fichiers php)
- img (dossier qui contient les images)
- index.php
Un peu de SQL
Pour chercher des données nous allons avoir besoin des requêtes suivantes:
- SELECT : select * from personnes
- INSERT : INSERT INTO personnes (id, nom, prenom, email) VALUES (NULL, :nom, :prenom, :email)
- UPDATE : UPDATE personnes SET nom=:nom, prenom=:prenom, email=:email WHERE id=:id
- DELETE : DELETE FROM personnes WHERE id=:id
Nous remplacerons les variables :id, :nom, :prenom et :email par les valeurs voulues plus tard.
Accès base avec PDO
Pour accéder à une base de données MySQL, on peut soit utiliser MySQLi soit utiliser PDO. Préférez PDO qui permet plus de souplesse. Voici le code qui permet de se connecter à une base MySQL:
<?php try{ $db = new PDO('mysql:host=localhost;dbname=exemple', 'root', 'password'); }catch(Exception $e){ echo "Échec : " . $e->getMessage(); } ?>
La variable $db contient la connexion base de données et si l'instanciation réussie, vous êtes connecté !
Nous allons centraliser tout ce qui est en relation avec la base de données dans le fichier php/db.php. Copiez les lignes précédentes dans ce fichier et faite une inclusion dans le fichier index.php:
<html> <head> <title>Exemple d'utilisation de PDO</title> </head> <body> <?php include("php/db.php"); ?> <body> <html>
Si vous ne voyez pas de message d'erreur, la connexion s'est correctement effectuée !
Création des fonctions base
Pour s’affranchir du CRUD nous allons agrémenter le fichier db.php des fonction suivantes:
function getUsers($db){ $select = $db->prepare('SELECT id, lname, fname, email FROM personnes'); $select->execute(); return $select->fetchAll(); } function getUserById($id, $db){ $select = $db->prepare('SELECT id, lname, fname, email FROM personnes WHERE id='.$id); $select->execute(); return $select->fetchAll()[0]; } function addUser($lname, $fname, $email, $db){ try{ $insert=$db->prepare('INSERT INTO dc.personnes (lname, fname, email) VALUES(:lname, :fname, :email)'); $insert->execute(array('lname' => $lname,'fname' => $fname,'email' => $email)); echo "</br>Enregistrement ok !"; }catch(Exception $e){ echo $sql . "</br>" . $e->getMessage(); } } function modifyUser($lname, $fname, $email, $id, $db){ try{ $insert=$db->prepare('UPDATE personnes SET lname=:lname, fname=:fname, email=:email WHERE id=:id'); $insert->execute(array('lname' => $lname,'fname' => $fname,'email' => $email, 'id'=>$id)); echo "</br>Enregistrement ok !"; }catch(Exception $e){ echo $sql . "</br>" . $e->getMessage(); } } function delUser($id, $db){ try{ $sql = 'DELETE FROM personnes WHERE id='.$id.''; $db->exec($sql); }catch(Exception $e){ echo $sql . "</br>" . $e->getMessage(); } }