PDO


Installation
;extension=php_pdo_mysql.dll vers ligne 583 de php.ini, activer l'extension

Connexion
$dsn = 'mysql:host=$host;dbname=$db';
try { $cnx = new PDO($dsn, $login, $pass); }
catch (PDOException $e) { die("Pb : " . $e->getMessage() ); }
cnx //connexion
db //database
Execution
$res = $cnx->exec($sql); renvoit nb lignes affectés (pas sur select)
$res = $cnx->query($sql);  
$res = $cnx->prepare($sql);
$res->execute();
 
foreach ($cnx->query($sql) as $row) echo $row['champ'];
methode rapide si peu de données
Exception
if($res) Pour éviter les requètes vides
Traitement
$res->columnCount() nb de champs retournés dans un select
$rows = $res->fetchAll();
foreach ($rows as $row) echo $row['champ'];
récupère tout dans un tableau
while ( $row = $res->fetch() )
echo $row[0].$row['champ'];
PDO::FETCH_BOTH par défaut
while ($row = $res->fetch(PDO::FETCH_ASSOC))
echo $row['champ'];
PDO::FETCH_ASSOC //champ en indice
while ($row = $res->fetch (PDO::FETCH_OBJ))
echo $row->champx.$row->champy;
PDO::FETCH_OBJ
while ($row = $res->fetch(PDO::FETCH_NUM))
echo $row[0];
PDO::FETCH_NUM //numéro champ en indice
$res = $sth->fetch( PDO::FETCH_NUM )
foreach($res as $val) echo $val;
traite 1 ligne
Requetes préparées (optimisation mysql)
$sql= "INSERT INTO table SET login = :login, pass= :pass";
$stmt = $dbh->prepare($sql);

$stmt->execute(array(':login' => 'dean',:pass' => 'monPass'));
on execute autant de fois qu'il y a d'insert
$sql= "INSERT INTO table SET login = :login, pass= :pass";
$stmt = $dbh->prepare($sql);

$stmt->bindParam(':login', $login);
$stmt->bindParam(':pass', $pass);
$stmt->execute()
idem avec utilisation de variab
Résumé
$res = $cnx->exec($sql); insert/update/delete renvoi nb affecté
$res = $cnx->prepare($sql);
$res->execute();
insert/update/delete
   
foreach ($cnx->query($sql) as $row) echo $row['champ']; select, méthode rapide
$res = $cnx->query($sql);
$res->columnCount()
select nb
$res = $cnx->query($sql);
$tabUnique = $res->fetch(PDO::FETCH_NUM);
$unique=$tabUnique [0];
select unique
$res = $cnx->query($sql);
while ($row = $res->fetch(PDO::FETCH_ASSOC)) echo $row['champ'];

select
$res = $cnx->query($sql);
$rows = $res->fetchAll();
foreach ($rows as $row) echo $row['champ'];
select, résultat dans un tableau
Temp
xx xx
xx xx