pdo en php est une bibliothèque de classes d'extension qui peut définir une interface légère et cohérente pour php. Son utilisation est la suivante : 1. Créez un exemple de fichier php ; 2. Via "try{$link = new PDO(. ); }catch(PDOException $e){...}" pour créer un objet pdo ; 3. Exécutez la requête via "$link->query('select *from user');" et renvoyez l'objet de jeu de résultats.
Cet environnement de système d'exploitation : système Linux5.18.14, ordinateur Dell G3.
1. Concepts de base
1. PDO : Abréviation de PHP Data Object. La bibliothèque de classes d'extension PDO définit une interface légère et cohérente pour PHP, qui fournit une couche d'abstraction d'accès aux données afin que, quelle que soit la base de données utilisée, les requêtes et les données puissent être obtenues via des fonctions cohérentes.
PDO est une « couche d'abstraction d'accès aux bases de données » qui unifie les interfaces d'accès de diverses bases de données.
2. Les opérations sur une base de données ne sont pas effectuées à l'aide de l'extension PDO elle-même et doivent être accessibles à l'aide de pilotes PDO spécifiques pour différents serveurs de base de données. Tel que : MYSQL (PDO_MYSQL). Une liste des parties PDO peut être consultée dans la fonction phpinfo().
2. Installation PDO
1. Linux : lors de l'installation de PHP, ajoutez l'indicateur suivant à la commande de configuration :
–with-pdo-mysql=/usr/local/mysql //where/usr/local/ mysql est le répertoire d'installation de mysql
2. Windows :
Trouvez le fichier php.ini sous C:windows
(1) Ouvrez : extension=php_pdo.dll
(2) Ouvrez : extension=php_pdo_mysql.dll
3. Utilisez le processus PDO
1. Connectez-vous à la base de données
2. Créez un objet PDO :
(1)$link = new PDO(DSN, nom d'utilisateur, mot de passe, attribut du pilote);
1) DSN : Nom de la source de données, permettant de définir un driver à utiliser et la base de données à utiliser. Le format DSN de mysql : 'mysql:host=localhost;dbname=lamp30'
2) Vous pouvez mettre le DSN dans le fichier, tel que : 'uri:file:///usr/local/dsn.txt'
3) Utilisez l'instruction try...catch lors de la création d'un objet, car lorsqu'une erreur se produit lors de la déclaration d'une instance PDO, une exception sera automatiquement levée. Par exemple :
Le code est le suivant
try{ $link = new PDO(‘mysql:host=localhost;dbname=lamp30’,’root’,’111111’); }catch(PDOException $e){ echo $e->getMessage(); exit(‘连接数据库错误.’); }
3. Attribut du pilote
(1) Vous pouvez transmettre les options nécessaires dans un tableau (le nom de l'attribut est utilisé comme clé d'élément et la valeur de l'attribut est utilisée comme clé d'élément). valeur de l'élément) et passé au quatrième paramètre du constructeur. Si l'attribut du pilote n'est pas défini dans le constructeur, vous pouvez utiliser ultérieurement la fonction setattribute() de la classe PDO pour définir chaque attribut.
(2) Il y a des explications chinoises de ces attributs à la page P501 du livre.
3. Définir le jeu de caractères : $link->query('set names UTF8')
5. Envoyer une instruction SQL
(1)$link->exec() : exécuter l'ajout, la suppression et la modification. , renvoie le nombre de lignes affectées reçu. Si l'exécution échoue, false ou 0 est renvoyé.
(2)$link->query() : exécute la requête et renvoie l'objet de jeu de résultats PDOStatement.
6. Résultats de la requête
1. Non-requête :
(1) Utilisez directement $link->exec() pour renvoyer le nombre de lignes affectées
(2)$link->lastInsertId( ) pour renvoyer la dernière valeur du numéro AUTO_INCREMENT générée par une commande INSERT
2 Voir prétraitement
7 Prétraitement
1 Étape 2 : Envoyer l'instruction SQL
Le code est le suivant
$stmt = $link->prepare(‘select * from user where id=:id’); $stmt->bindparam(‘:id’, $id, PDO::PARAM_INT); $id = 2; $stmt->execute();
bindParam(. ) les paramètres ont les 7 types suivants : Vous n'avez pas besoin d'écrire
PDO::PARAM_INT
PDO::PARAM_STR
PDO::PARAM_BOOL
PDO::PARAM_NULL
PDO::PARAM_LOB : type de données d'objet volumineux
PDO::PARAM_STMT : type d'instruction PDO
PDO ::PARAM_INPUT_OUTPUT : le type de données utilisé par la procédure stockée
2. Étape 3 :
Par exemple :
Le code est le suivant
$stmt = $link->query(‘select * from user’);
(1) fetch () method
$pdoStat ->bindColumn(1, $id); //第一个参数可以是从1开始的索引值 $pdoStat ->bindColumn(‘name’, $name); //也可以是列名 $pdoStat ->bindColumn(‘pass’, $pass); while($row = $stmt ->fetch(PDO::FETCH_BOUND)){ echo $id.’ ’; echo $name.’ ’; echo $pass.’ ’; }
fetch() a six paramètres : voir le manuel .
Vous pouvez utiliser la méthode setFetchMode() pour définir le mode par défaut.
(2)méthode fetchall()
Le code est le suivant
$result = $stmt ->fetchall(); foreach($result as $row){ echo $row[‘id’].’ ’; echo $row[‘name’].’ ’; echo $row[‘pass’].’ ’; }
Les paramètres Fetchall() sont les mêmes que fetch().
8. Traitement des transactions
1. Désactivez la validation automatique (modifiez dans les propriétés du pilote)
2. Activez la transaction
3. Activez la validation automatique
Par exemple :
Le code est le suivant
$link = new PDO(‘mysql:host=localhost;dbname=lamp30’); //1 $link->setattribute(PDO::ATTR_AUTOCOMMIT, false); //2 $link->begintransaction(); $result = $link->exec(‘insert into user(name,paa) values(‘wsy’,’111’)’); //3 if($result){ $link->commit(); }else{ $link->rollback(); } //4 $link->setattribute(PDO::ATTR_AUTOCOMMIT, true);
1 $link->getattribute (nom de l'attribut) : Obtenez un attribut de pilote.
2. $link->setattribute (nom de l'attribut, valeur de l'attribut) : définissez un attribut de pilote.
1) Parce qu'Oracle renvoie les chaînes vides sous forme de valeurs NULL, mais que les autres bases de données n'ont pas cette fonctionnalité, afin d'avoir une meilleure compatibilité $link->setattribute(PDO::ATTR_ORACLE_NULLS,PDO::NULL_EMPTY_STRING,);
2 ) Il existe trois manières d'afficher les erreurs : statique, message d'avertissement, exception
3 $link->errorcode() : obtenez le code d'erreur.
1) Si la fonction setattribute définit le mode d'affichage des erreurs sur statique, rien ne sera affiché lorsqu'une erreur se produit. Cette fonction doit être appelée pour afficher le numéro d'erreur.
4. $link->errorinfo() : Obtenez des informations sur l'erreur (tableau).
1) Si la fonction setattribute définit le mode d'affichage des erreurs sur statique, rien ne sera affiché lorsqu'une erreur se produit. Cette fonction doit être appelée pour afficher le message d'erreur.
5. $link->lastinsertid() : récupère la valeur de clé primaire des dernières données insérées dans la table (si plusieurs données sont insérées en même temps, renvoie l'ID de la première ligne insérée).
6、$link->prepare():发送准备的SQL语句,返回PDOStatement对象。
7、$link->begintransaction():打开事务。
8、$link->commit():提交一个事务,执行一个SQL。
9、$link->rollback():回滚一个事务。
十、错误模式
1、静态模式:
代码如下
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT)
(1) 默认模式,在错误发生时不进行任何操作,PDO将只设置错误代码。
(2) 查看错误可以调用errorCode()和errorInfo(),PDO和PDOStatement类都有这两个方法。
2、警告模式:
代码如下
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING)
(1)此模式在设置错误代码以外,PDO还将发出一条PHP传统的E_WARNING消息。
(2)这是mysql和mysqli显示错的方式。
3、异常模式:
代码如下
$link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION)
(1) 此模式在设置错误代码以外,PDO还将抛出一个PDOException,并设置其属性,以反映错误代码和错误信息。
(2) 如果异常导致脚本终止,则事务将自动回滚。
(3) PDO推荐使用此模式。
十一、持久连接
代码如下
$link->setAttribute(PDO::ATTR_PERSISTENT, true);
持久连接即当脚本执行结束时不会自动断开连接,而且用$link->close()不能关闭连接。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!