1. Établissement de la connexion
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
? ;
2. Gestion des erreurs de connexion
essayez {
$dbh = new PDO( 'mysql :host=localhost;dbname=test', $user, $pass);
foreach($dbh->query('SELECT * from FOO') as $row) {
print_r($row );
}
$dbh = null;
} catch (PDOException $e) {
print "Erreur ! : " $e->getMessage() . ;
die();
}
?>
Fermer la connexion
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// Utiliser la connexion ici
// Maintenant que l'exécution est terminée, fermez la connexion ici $dbh = null ?>
Transaction
Toutes les transactions de base de données ne sont pas pris en charge, PDO doit donc s'exécuter en mode "autocommit" lors de la première ouverture d'une connexion. Le mode de validation automatique signifie que chaque exécution de requête possède sa propre transaction implicite si la base de données la prend en charge, ou aucune si la base de données ne prend pas en charge les transactions. Si une transaction est requise, elle doit être démarrée avec la méthode PDO::beginTransaction(). Si le pilote sous-jacent ne prend pas en charge les transactions, une PDOException est levée (il s'agit d'une condition d'erreur grave quels que soient les paramètres de gestion des erreurs). Une fois qu'une transaction est démarrée, elle peut être complétée avec PDO::commit() ou PDO::rollBack(), selon que le code de la transaction s'est exécuté avec succès.
Lorsque le script se termine ou que la connexion est sur le point d'être fermée, s'il y a une transaction inachevée, PDO annulera automatiquement la transaction. Cette mesure de sécurité permet d'éviter les incohérences si le script se termine de manière inattendue : si la transaction n'est pas validée explicitement, on suppose que quelque chose s'est mal passé, une restauration est donc effectuée pour protéger les données.
Dans l'exemple suivant, supposons qu'un ensemble d'entrées soit créé pour un nouvel employé et se voit attribuer un identifiant de 23. En plus d'enregistrer les données de base de la personne, il est également nécessaire d'enregistrer son salaire. Il est simple d'effectuer les deux mises à jour séparément, mais en les enfermant dans les appels PDO::beginTransaction() et PDO::commit(), vous vous assurez que personne d'autre ne peut voir les modifications tant qu'elles ne sont pas terminées. Si une erreur se produit, le bloc catch annule toutes les modifications survenues depuis le démarrage de la transaction et imprime un message d'erreur.
essayez {
$dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
array(PDO::ATTR_PERSISTENT => true));
echo "Connectedn";
} catch (Exception $e) {
die("Impossible de se connecter : " . $e->getMessage ());
}
essayez {
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh-> ;beginTransaction(); $dbh->exec("insérer dans les valeurs du personnel (id, premier, dernier) (23, 'Joe', 'Bloggs')"); salairechange ( id, montant, modifié) valeurs (23, 50000, MAINTENANT())"); $dbh->commit();
} catch (Exception $e) { $dbh-> ;rollBack() ; echo "Failed: " . $e->getMessage(); } ?>
Ce qui précède est le contenu de la note 004 PHP POD Study Note 03. Pour plus de contenu connexe, veuillez faites attention au site Web PHP chinois (www.php.cn) !