Maison > php教程 > PHP开发 > Explication détaillée de la bibliothèque de fonctions PHP PDO

Explication détaillée de la bibliothèque de fonctions PHP PDO

高洛峰
Libérer: 2017-01-06 14:31:25
original
1404 Les gens l'ont consulté

Actuellement, il reste un long chemin à parcourir pour implémenter la « couche d'abstraction de base de données ». Utiliser une « couche d'abstraction d'accès à la base de données » comme PDO est un bon choix.

PDO contient trois classes prédéfinies

PDO contient trois classes prédéfinies, qui sont PDO, PDOStatement et PDOException.

1. PDO

PDO->beginTransaction() — Marquez le point de départ de la restauration
PDO->commit() — Marquez le point final de la restauration et exécutez SQL
PDO->__construct() — Créez une instance d'une base de données de liens PDO
PDO->errorCode() — Obtenez le code d'erreur
PDO->errorInfo() — Obtenez les informations d'erreur
PDO- >exec() — Traite une instruction SQL et renvoie le nombre d'entrées affectées
PDO->getAttribute() — Récupère les attributs d'un "objet de connexion à la base de données"
PDO->getAvailableDrivers() — Obtenez le nom du lecteur PDO valide
PDO->lastInsertId() — Obtenez la valeur de clé primaire de la dernière donnée écrite
PDO->prepare() — Générez un "objet de requête"
PDO -> ;query() — Traite une instruction SQL et renvoie un "PDOStatement"
PDO->quote() — Ajoute des guillemets à une chaîne dans un SQL
PDO->rollBack() — Exécute le retour Roll
PDO->setAttribute() — Définir les attributs d'un "objet de connexion à la base de données"

2. PDOStatement

PDOStatement->bindColumn() — Lier une colonne à un PHP variable
PDOStatement->bindParam() — Lie un paramètre au nom de variable spécifié
PDOStatement->bindValue() — Lie une valeur à un paramètre
PDOStatement->closeCursor() — Ferme le curseur, permettant à l'instruction d'être à nouveau exécutée.
PDOStatement->columnCount() — Renvoie le nombre de colonnes dans le jeu de résultats
PDOStatement->errorCode() — Récupère le SQLSTATE associé à la dernière opération sur le handle d'instruction
PDOStatement->errorInfo() — Récupère les informations d'erreur étendues associées à la dernière opération sur le handle d'instruction
PDOStatement->execute() — Exécute une instruction préparée
PDOStatement-> () — Récupère la ligne suivante d'un ensemble de résultats
PDOStatement->fetchAll() — Renvoie un tableau contenant toutes les lignes de l'ensemble de résultats
PDOStatement->fetchColumn() — Renvoie une seule colonne de la suivante ligne d'un ensemble de résultats
PDOStatement->fetchObject() — Récupère la ligne suivante et la renvoie en tant qu'objet.
PDOStatement->getAttribute() — Récupère un attribut d'instruction
PDOStatement-> () — Renvoie les métadonnées d'une colonne dans un ensemble de résultats
PDOStatement->nextRowset() — Passe à l'ensemble de lignes suivant dans une instruction multi-lignes handle
PDOStatement->rowCount() — Renvoie le nombre de lignes affectées par la dernière instruction SQL
PDOStatement->setAttribute() — Définir un attribut d'instruction
PDOStatement->setFetchMode() — Définir le mode de récupération par défaut pour cette instruction

PDO est A La « couche d'abstraction d'accès à la base de données » est utilisée pour unifier les interfaces d'accès de diverses bases de données. Par rapport aux bibliothèques de fonctions de mysql et mysqli, PDO rend l'utilisation entre bases de données plus conviviale que ADODB et MDB2, PDO est plus efficace. À l'heure actuelle, il reste un long chemin à parcourir pour implémenter la « couche d'abstraction de base de données ». L'utilisation d'une « couche d'abstraction d'accès à la base de données » telle que PDO est un bon choix.

PDO contient trois classes prédéfinies

PDO contient trois classes prédéfinies, qui sont PDO, PDOStatement et PDOException.

1. PDO

PDO->beginTransaction() — Marquez le point de départ de la restauration
PDO->commit() — Marquez le point final de la restauration et exécutez SQL
PDO->rollBack() — Effectuer une restauration
PDO->__construct() — Créer une instance de la base de données de liens PDO
PDO->errorCode() — Obtenir le code d'erreur
PDO-> ;errorInfo() — Récupère les informations sur l'erreur
PDO->exec() — Traite une instruction SQL et renvoie le nombre d'entrées affectées
PDO->getAttribute() — Récupère un « objet de connexion à la base de données » Propriétés de
PDO->getAvailableDrivers() — Obtenez le nom du pilote PDO valide
PDO->lastInsertId() — Obtenez la valeur de la clé primaire de la dernière donnée écrite
PDO->prepare( ) — Générer un « objet de requête »
PDO->query() — Traiter une instruction SQL et renvoyer un « PDOStatement »
PDO->quote() — Ajouter à une chaîne dans un SQL Quotes
PDO ->setAttribute() — Définir les attributs d'un "objet de connexion à la base de données"

Explication détaillée 1) Connexion à la base de données dans PDO
$dsn = 'mysql:dbname=ent;host =127.0.0.1′;
$user = 'root';
$password = '123456';
essayer {
$dbh = new PDO($dsn, $user, $password, array (PDO::ATTR_PERSISTENT = > true));
$dbh->query('set names utf8;');
foreach ($dbh->query('SELECT * from tpm_juese') as $row) {
print_r($row);
}
} catch (PDOException $e) {
echo 'Échec de la connexion : ' .

De nombreuses applications Web sont optimisées en utilisant des connexions persistantes à la base de données. La connexion persistante n'est pas fermée à la fin du script,
elle est plutôt mise en cache et réutilisée lorsqu'un autre script demande une connexion avec le même ID.
Le cache des connexions persistantes vous permet d'éviter la consommation de ressources liée au déploiement d'une nouvelle connexion à chaque fois que le script doit communiquer avec la base de données, ce qui rend votre application Web plus rapide.
Le tableau (PDO::ATTR_PERSISTENT => true) dans l'exemple ci-dessus définit le type de connexion sur connexion persistante.

Explication détaillée 2) Les transactions dans PDO
PDO->beginTransaction(), PDO->commit(), PDO->rollBack() sont les trois méthodes utilisées lorsque la fonction de restauration est prise en charge ensemble. La méthode PDO->beginTransaction() marque le point de départ, la méthode PDO->commit() marque le point final de la restauration et exécute SQL, et PDO->rollBack() effectue la restauration.
essayez {
$dbh = new PDO('mysql:host=localhost;dbname=test', 'root', ”);
$dbh->query( 'set names utf8;');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$dbh->beginTransaction();
$dbh- >exec("INSERT INTO `test`.`table` (`name` ,`age`)VALUES ('mick', 22);");
$dbh->exec("INSERT INTO `test `.`table` (`nom` ,`age`)VALUES ('lily', 29);");
$dbh->exec("INSERT INTO `test`.`table` (`nom` ,`age`)VALUES ('susan', 21);”);
$dbh->commit();

} catch (Exception $e) {
$dbh-> ;rollBack();
echo "Failed: " . $e->getMessage();
}
?>
Maintenant que vous avez établi la connexion via PDO, avant de déployer la requête vous Vous devez comprendre comment PDO gère les transactions. Si vous n'avez jamais rencontré de traitement de transactions auparavant, (maintenant une brève introduction :) ils offrent 4 fonctionnalités principales : Atomicité, Cohérence, Indépendance et Durabilité (Atomicité), Cohérence, Isolation et Durabilité (ACID) En termes simples, lorsque tous les travaux d'une transaction sont soumis, même s'ils sont exécutés par étapes, ils doivent être appliqués en toute sécurité à la base de données et ne pas être interférés par d'autres connexions. Ils peuvent être facilement annulés automatiquement lorsqu'une erreur se produit. la requête. L'utilisation typique des transactions consiste à "enregistrer" les modifications par lots, puis à les exécuter immédiatement. En d'autres termes, cela améliorera complètement l'efficacité des mises à jour, les transactions peuvent rendre vos scripts plus rapides et potentiellement plus robustes (pour obtenir cet avantage). vous devez toujours les utiliser correctement)

Malheureusement, toutes les bases de données ne prennent pas en charge les transactions, donc PDO est requis. L'exécution dans ce qui est considéré comme un mode "autocommit" lors de l'établissement d'une connexion. Le mode Autocommit signifie que chaque requête que vous exécutez a son mode de validation automatique. propre traitement implicite des transactions, que la base de données prenne en charge les transactions ou qu'elle n'existe pas parce qu'elle n'en a pas. Si vous avez besoin d'une transaction, vous devez en créer une à l'aide de la méthode PDO->beginTransaction(). Si le pilote sous-jacent ne prend pas en charge les transactions, une PDOException sera levée (quels que soient vos paramètres de gestion des exceptions, car il s'agit toujours d'une condition d'erreur grave). Au sein d'une transaction, vous pouvez y mettre fin en utilisant 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 qu'une connexion doit être fermée, si vous avez encore une transaction inachevée, PDO l'annulera automatiquement. Il s'agit d'une solution sûre au cas où le script se terminerait de manière inattendue : si vous ne validez pas explicitement la transaction, il supposera que quelque chose s'est mal passé et effectuera une restauration pour la sécurité de vos données.

2. Déclaration PDO

PDOStatement->bindColumn() — Lier une colonne à une variable PHP
PDOStatement->bindParam() — Lier un paramètre au nom de variable spécifié
PDOStatement->bindValue() — Lier un valeur à un paramètre
PDOStatement->closeCursor() — Ferme le curseur, permettant à l'instruction d'être à nouveau exécutée.
PDOStatement->columnCount() — Renvoie le nombre de colonnes dans l'ensemble de résultats
PDOStatement->errorCode() — Récupère le SQLSTATE associé à la dernière opération sur le handle d'instruction
PDOStatement->errorInfo() — Récupère les informations d'erreur étendues associées à la dernière opération sur le handle d'instruction
PDOStatement-> ;execute() — Exécute une instruction préparée
PDOStatement->fetch() — Récupère la ligne suivante d'un ensemble de résultats
PDOStatement->fetchAll() — Renvoie un tableau contenant toutes les lignes de l'ensemble de résultats
PDOStatement->fetchAll() — Renvoie un tableau contenant toutes les lignes de l'ensemble de résultats
PDOStatement->fetchColumn() — Renvoie une seule colonne de la ligne suivante d'un ensemble de résultats
PDOStatement->fetchObject() — Récupère la ligne suivante et la renvoie en tant qu'objet.
PDOStatement-> ;getAttribute() — Récupère un attribut d'instruction
PDOStatement->getColumnMeta() — Renvoie les métadonnées d'une colonne dans un ensemble de résultats
PDOStatement->nextRowset() — Passe à l'ensemble de lignes suivant dans un ensemble à plusieurs lignes Statement handle
PDOStatement->rowCount() — Renvoie le nombre de lignes affectées par la dernière instruction SQL
PDOStatement->setAttribute() — Définit un attribut d'instruction

PDOStatement->setFetchMode() — Définissez le mode de récupération par défaut pour cette instruction

三、PDOException


PDO 提供了3中不同的错误处理策略。
1. PDO : ERRMODE_SILENT Code() et PDO->errorInfo() sont utilisés PDOStatement->errorCode() ou PDOStatement->err orInfo() est utilisé pour la base de données.调用时导致的,你就应该在这个base de données对象上调用那两个方法。
2. PDO::ERRMODE_WARNING
作为设置错误代号的附加,PDO将会发出一个传统的E_WARNING信息。这种设置在除错和调试时是很有用的,如果你只是想看看发生了什么问题而不想中断程序的流程的话。
3. PDO::ERRMODE_EXCEPTION
作为设置错误代号的附件,PDO会抛出一个PDOException异常并设置它的属性来反映错误代号和错误信息。这中设置在除错时也是很有用的,因为他会有效的« Explosion) » »导致脚本中断,事务处理回自动回滚。)
异常模式也是非常有用的,因为你可以使用比以前那种使用传统的PHP风格的错误处理结构更清晰的结构处理错误,比使用安静模式使用更少的代码及嵌套,也能够更加明确地检查每个数据库访问PDO et SQL-92 SQLSTATE Gestion des tâches PDO et SQLSTATE Il s'agit de PDO->errorCode().息,PDO也提供了一个PDO->errorInfo()方法,它可以返回一个

// 修改默认的错误显示级别

$dbh-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
?>

属性列表:

PDO::PARAM_BOOL
Représente un type booléen
PDO::PARAM_NULL
Représente un type NULL en SQL
PDO::PARAM_INT
Représente un type INTEGER en SQL
PDO ::PARAM_STR
représente un SQL CHAR en SQL, le type VARCHAR
PDO::PARAM_LOB
représente un type d'objet volumineux en SQL
PDO::PARAM_STMT
représente un SQL Le type de jeu d'enregistrements n'est pas encore pris en charge
PDO::PARAM_INPUT_OUTPUT
Spécifie que le paramètre est un paramètre INOUT pour une procédure stockée. Vous devez effectuer un OU au niveau du bit avec un type de données PDO::PARAM_* explicite.
PDO::FETCH_LAZY<.>Renvoie chaque ligne de résultats sous forme d'objet
PDO::FETCH_ASSOC
Renvoie uniquement l'ensemble de résultats de la requête avec la valeur clé comme indice Les données portant le même nom ne renvoient qu'un seul
PDO ::. FETCH_NAMED
Renvoie uniquement le jeu de résultats de la requête avec la valeur de clé comme indice, et les données avec le même nom sont renvoyées sous la forme d'un tableau
PDO::FETCH_NUM
Renvoie uniquement le jeu de résultats de la requête avec le numéro en indice
PDO::FETCH_BOTH
Renvoie le jeu de résultats de la requête avec la valeur clé et le numéro en indice en même temps
PDO::FETCH_OBJ
Renvoie le résultat défini sous la forme d'un objet
PDO::FETCH_BOUND
La valeur liée à PDOStatement::bindParam() et PDOStatement::bindColumn() est renvoyée sous forme de nom de variable après affectation
PDO::FETCH_COLUMN
signifie que seule une certaine colonne du jeu de résultats est renvoyée
PDO::FETCH_CLASS
Indique que le jeu de résultats est renvoyé sous la forme d'une classe
PDO::FETCH_INTO
Indique que les données est fusionné dans une classe existante et renvoyé
PDO::FETCH_FUNC
PDO::FETCH_GROUP
PDO ::FETCH_UNIQUE
PDO::FETCH_KEY_PAIR
Renvoie l'ensemble de résultats sous la forme de la première clé valeur et les nombres suivants
PDO::FETCH_CLASSTYPE
PDO::FETCH_SERIALIZE
signifie que les données seront fusionnées dans une classe existante et sérialisées à nouveau Délégué, démarrez l'exécution
PDO::ATTR_PREFETCH
Définissez à l'avance la taille des données obtenues par l'application, toutes les bases de données ne la prennent pas en charge
PDO::ATTR_TIMEOUT
Définissez la valeur du délai d'expiration de la base de données de connexion
PDO ::ATTR_ERRMODE
Définissez le mode de traitement des erreurs
PDO::ATTR_SERVER_VERSION
Attribut en lecture seule, indiquant la version de la base de données côté serveur de la connexion PDO
PDO::ATTR_CLIENT_VERSION
Attribut en lecture seule, indiquant la connexion PDO La version du pilote PDO client
PDO::ATTR_SERVER_INFO
Attribut en lecture seule, indiquant les méta-informations du serveur connecté à PDO
PDO::ATTR_CONNECTION_STATUS
PDO::ATTR_CASE
By PDO::CASE_ Le contenu de * opérer sur la forme des colonnes
PDO::ATTR_CURSOR_NAME
Obtenir ou définir le nom du pointeur
PDO::ATTR_CURSOR
Définir le type du pointeur prend désormais en charge PDO::CURSOR_FWDONLY et. PDO::CURSOR_FWDONLY
PDO::ATTR_DRIVER_NAME
Renvoie le nom du pilote PDO utilisé
PDO::ATTR_ORACLE_NULLS
Convertit la chaîne vide renvoyée en SQL NULL
PDO::ATTR_PERSISTENT
Obtenez une connexion existante
PDO::ATTR_STATEMENT_CLASS
PDO::ATTR_FETCH_CATALOG_NAMES
Dans le jeu de résultats renvoyé, utilisez des noms de catalogue personnalisés au lieu de noms de champs.
PDO::ATTR_FETCH_TABLE_NAMES
Utilisez des noms de table personnalisés à la place des noms de champs dans le jeu de résultats renvoyé.
PDO::ATTR_STRINGIFY_FETCHES
PDO::ATTR_MAX_COLUMN_LEN
PDO::ATTR_DEFAULT_FETCH_MODE
Disponible depuis PHP 5.2.0
PDO::ATTR_EMULATE_PREPARES
Disponible depuis PHP 5.1.3 .
PDO::ERRMODE_SILENT
Ne signale aucun message d'erreur lorsqu'une erreur se produit, ce qui est la valeur par défaut
PDO::ERRMODE_WARNING
Envoie un message php E_WARNING lorsqu'une erreur se produit
PDO::ERRMODE_EXCEPTION
Lève une PDOException lorsqu'une erreur se produit
PDO::CASE_NATURAL
Répondre au format d'affichage par défaut de la colonne
PDO::CASE_LOWER
Forcer le nom de la colonne à être en minuscules
PDO:: CASE_UPPER
Forcer la colonne Le nom est en majuscule
PDO::NULL_NATURAL
PDO::NULL_EMPTY_STRING
PDO::NULL_TO_STRING
PDO::FETCH_ORI_NEXT
Obtenir la ligne de données suivante dans le ensemble de résultats, valide uniquement lorsqu'il existe une fonction pointeur
PDO::FETCH_ORI_PRIOR
Obtient la ligne de données précédente dans l'ensemble de résultats Il n'est valide que lorsque la fonction pointeur est disponible.
Obtient la première ligne de données dans l'ensemble de résultats. Elle n'est valide que lorsque la fonction pointeur est disponible.
PDO::FETCH_ORI_LAST
Obtient la dernière ligne de données dans l'ensemble de résultats, qui n'est valide que. lorsque la fonction pointeur est disponible
PDO::FETCH_ORI_ABS
Obtient une certaine ligne de données dans l'ensemble de résultats, qui n'est valide que lorsque la fonction pointeur est disponible
PDO::FETCH_ORI_REL
Obtenir les données d'une ligne après la ligne actuelle dans le jeu de résultats, qui n'est valide que lorsqu'il existe une fonction de pointeur
PDO::CURSOR_FWDONLY
Créer un objet d'opération de pointeur vers l'arrière uniquement
PDO::CURSOR_SCROLL
Créez un objet d'opération de pointeur et transmettez le contenu dans PDO::FETCH_ORI_* pour contrôler le jeu de résultats
PDO::ERR_NONE (string)
Définissez le message d'erreur lorsqu'il n'y a pas d'erreur
PDO::PARAM_EVT_ALLOC
Événement d'allocation
PDO::PARAM_EVT_FREE
Événement de désallocation
PDO::PARAM_EVT_EXEC_PRE
Événement déclenché avant l'exécution d'une instruction préparée.
PDO::PARAM_EVT_EXEC_POST
Événement déclenché après l'exécution d'une instruction préparée.
PDO::PARAM_EVT_FETCH_PRE
Événement déclenché avant pour récupérer un résultat à partir d'un ensemble de résultats .
PDO::PARAM_EVT_FETCH_POST
Événement déclenché après la récupération d'un résultat à partir d'un ensemble de résultats.
PDO::PARAM_EVT_NORMALIZE
Événement déclenché pendant l'enregistrement du paramètre lié permettant au pilote de normaliser le paramètre nom.

更多PHP PDO函数库详解相关文章请关注PHP中文网!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal