Corrigé PDO – ordre SQL paramétré

Voici un exemple de solution :

<?php

// recup du parametre d’entree (URL ou formulaire)
$no_dep =$_GET[‘no_dep’];

// variable du programme
$chaine_sql =’SELECT ename, sal FROM emp WHERE deptno =:no_dep’;
$user=’DD’; $mdp=’DD’;

try {

$connexion = new PDO(‘mysql:host=localhost;dbname=test’, $user, $mdp);

$ordre_sql = $connexion->prepare($chaine_sql);
// association param d’entree SQL et var PHP (bind)
$ordre_sql->bindParam(‘:no_dep’, $no_dep, PDO::PARAM_INT);

// execution de l’ordre
$ordre_sql->execute();
print (« <PRE> »);

// boucle de fetch
while ($ligne = $ordre_sql->fetch(PDO::FETCH_NUM, PDO::FETCH_ORI_NEXT)) {
$data = $ligne[0] . « \t\t » . $ligne[1] . « \n »;
print $data;
}
print (« </PRE> »);

// fermenure de la connexion
$connexion = null;

} catch (PDOException $e) {
print « Erreur!:  » . $e->getMessage() . « <br/> »;
die();
}

?>

Le résultat aura l’allure suivante :

Employes et salaires du departement 30

ALLEN		2342.56
WARD		2512.5
MARTIN		1512.5
BLAKE		3448.5
TURNER		1815
JAMES		1149.5

On aurait pu rajouter les nom de colonnes en utilisant la fonction getColumnMeta, mais celle ci est assez mal supportée pour le moment, d’après la doc…