Basculer le menu
Changer de menu des préférences
Basculer le menu personnel
Non connecté(e)
Votre adresse IP sera visible au public si vous faites des modifications.

Php pdo

De The Linux Craftsman

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();
	}
}