Les exemples qui vont suivre s'appuient sur la base de données "test" et la table "tab1" ayant les champs suivants:
Pour installer MySql voir ici
try{$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '*******');}
catch (Exeption $e) {die('Erreur : ' . $e->getMessage());}
Pour installer sqlite3:
apt-get install php5-sqlite
ouapt-get install php7.0-sqlite
selon votre version de Php
try{$bdd = new PDO('sqlite:db/base.db');}
catch (Exeption $e) {die('Erreur : ' . $e->getMessage());}
Le répertoire "db" doit avoir les droits en écriture!
Pour installer Postgresql voir ici
try{$bdd = new PDO('pgsql:host=localhost;dbname=test', 'root', '*******');}
catch (Exeption $e) {die('Erreur : ' . $e->getMessage());}
$reponse = $bdd->query('SELECT * FROM tab1') or die(print_r($bdd->errorInfo()));
while ($donnees = $reponse->fetch())
{
echo $donnees['id'];
echo '<br />';
echo $donnees['nbr'];
echo '<br />';
echo $donnees['titre'];
echo '<br />';
// ...
}
$reponse->closeCursor();
Ajouter
$bdd->exec('INSERT INTO tab1(nbr, titre, texte, date) VALUES("77","titre7","texte7","2013-07-07")');
Modifier
$bdd->exec('UPDATE tab1 SET date="2013-06-07" WHERE id=7');
$n = 40;
$req = $bdd->prepare('SELECT * FROM tab1 WHERE nbr > ?');
$req->execute(array($n)) or die(print_r($req->errorInfo()));
while ($donnees = $req->fetch())
{
echo $donnees['id'];
echo '<br />';
echo $donnees['nbr'];
echo '<br />';
echo $donnees['titre'];
echo '<br />';
}
$req->closeCursor();
La même chose avec plusieurs variables
$n = 40;
$i = 80;
$req = $bdd->prepare('SELECT * FROM tab1 WHERE nbr > ? AND nbr < ?');
$req->execute(array($n,$i)) or die(print_r($req->errorInfo()));
L'ordre dans le quel sont appelées les variables doit correspondre à l'ordre dans le quel les marqueurs sont appelés dans la requête Sql.
La même chose que ci-dessus mais avec des marqueurs nominatifs
$n = 40;
$i = 80;
$req = $bdd->prepare('SELECT * FROM tab1 WHERE nbr > :nombre_min AND nbr < :nombre_max');
$req->execute(array('nombre_max'=>$i, 'nombre_min'=>$n)) or die(print_r($req->errorInfo()));
On remarquera que cette fois ci, l'ordre dans le quel on à appelé les variables n'a plus d'importance.
Remarque
Dans tous les cas c'est un tableau qui est créé par la méthode "execute()", on peut donc déclarer ce tableau directement et l'insérer dans la méthode
$n = 40;
$i = 80;
$tab = array('nombre_min'=>$n, 'nombre_max'=>$i);
$req = $bdd->prepare('SELECT * FROM tab1 WHERE nbr > :nombre_min AND nbr < :nombre_max');
$req->execute($tab) or die(print_r($req->errorInfo()));
$entrees = array(
'nombre'=>88,
'titre'=>'titre8',
'texte'=>'texte8',
'date'=>'2013-08-08',
);
$req = $bdd->prepare('INSERT INTO tab1(nbr,titre,texte,date) VALUES(:nombre, :titre, :texte, :date)');
$req->execute($entrees) or die(print_r($req->errorInfo()));
$req->closeCursor();
$entrees = array(
'identifiant'=>9,
'newdate'=>'2013-10-10',
);
$req = $bdd->prepare('UPDATE tab1 SET date = :newdate WHERE id = :identifiant');
$req->execute($entrees) or die(print_r($req->errorInfo()));
$req->closeCursor();
$req = $bdd->prepare('DELETE FROM tab1 WHERE id = :identifiant');
$req->execute(array('identifiant'=>9)) or die(print_r($req->errorInfo()));
$req->closeCursor();
/!\ ATTENTION: sans la présence de "WHERE" c'est toute la table qui sera vidée!