Différences entre versions de « Php pdo »

De The Linux Craftsman
Aller à la navigation Aller à la recherche
(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'':
Nous allons centraliser les requêtes ''SQL'' dans le fichier ''php/db.php'':
+
<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é !
  
Pour le moment, index.php nous
+
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();
	}
}