Maison >développement back-end >Problème PHP >Comment définir et obtenir les attributs PDO dans l'apprentissage des bases de données PHP ?

Comment définir et obtenir les attributs PDO dans l'apprentissage des bases de données PHP ?

WBOY
WBOYoriginal
2021-10-28 17:58:332255parcourir

Dans l'article précédent, je vous ai présenté "Comment gérer les erreurs dans PDO pour l'apprentissage des bases de données PHP ?" 》, qui présente en détail les connaissances pertinentes sur la gestion des erreurs PDO en PHP. Dans cet article, voyons comment définir et obtenir les attributs PDO en PHP. J'espère que cela aidera tout le monde !

Comment définir et obtenir les attributs PDO dans l'apprentissage des bases de données PHP ?

Dans l'article précédent, nous avons découvert les problèmes liés à la gestion des erreurs PDO en PHP, puis apprenons comment définir et obtenir les attributs PDO. Il existe de nombreuses propriétés dans l'objet PDO qui peuvent être utilisées pour ajuster le comportement du PDO ou obtenir l'état du pilote sous-jacent.

Si aucune option d'attribut n'est définie dans le dernier paramètre du constructeur lors de la création d'un objet PDO, vous pouvez utiliser setAttribute() et getAttribute dans l'objet PDO après la création de l'objet. () La méthode définit et obtient les valeurs de ces propriétés. Examinons ensuite ces deux méthodes ensemble. setAttribute()getAttribute() 方法设置和获取这些属性的值。那接下来就让我们一起来了解一下这两个方法吧。

<strong><span style="font-size: 20px;">getAttribute()</span></strong> 方法

getAttribute() 方法只需要提供一个参数,就能够传递一个代表这个参数的特定属性名称,执行成功后会返回该属性所指定的值,否则返回 NULL。很容易理解,它的语法格式如下:

PDO::getAttribute(int $attribute)

其中需要注意的是:

参数 $attribute PDO::ATTR_* 常量中的一个,应用到数据库连接中的常量有很多,

我们先通过示例先看一下,然后在做总结,示例如下:

<?php
    header("Content-Type: text/html;charset=utf-8");
    $opt = [PDO::ATTR_PERSISTENT=>TRUE];
    try{
        $pdo = new PDO(&#39;mysql:dbname=test;host=127.0.0.1&#39;,&#39;root&#39;,&#39;root&#39;,$opt);
    }catch(PDOException $e){
        echo &#39;数据库连接失败:&#39;.$e->getMessage();
        exit();
    }
    echo &#39;PDO 是否关闭自动提交功能:&#39;.$pdo -> getAttribute(PDO::ATTR_AUTOCOMMIT);
    echo &#39;<br>当前 PDO 的错误处理模式:&#39;.$pdo -> getAttribute(PDO::ATTR_ERRMODE);
    echo &#39;<br>表字段字符的大小写转换:&#39;.$pdo -> getAttribute(PDO::ATTR_CASE);
    echo &#39;<br>空字符串转换为 SQL 的 null:&#39;.$pdo -> getAttribute(PDO::ATTR_ORACLE_NULLS);
    echo &#39;<br>应用程序提前获取数据大小:&#39;.$pdo -> getAttribute(PDO::ATTR_PERSISTENT);
?>

输出结果:

Comment définir et obtenir les attributs PDO dans lapprentissage des bases de données PHP ?

由上述结果,我们总结一下:

PDO::ATTR_AUTOCOMMIT表示的是PDO 是否关闭自动提交功能,PDO::ATTR_ERRMODE表示的是当前 PDO 的错误处理模式,PDO::ATTR_CASE表示的是表字段字符的大小写转换, PDO::ATTR_ORACLE_NULLS表示的是空字符串转换为 SQL 的 null,PDO::ATTR_PERSISTENT表示的是应用程序提前获取数据大小。

不止这些,再给大家总结一下一些常用的应用到数据库连接中的常量:

  • PDO::ATTR_CONNECTION_STATUS   表示与连接状态相关的特有信息。

  • PDO::ATTR_SERVER_INFO    表示数据库特有的服务器信息。

  • PDO::ATTR_SERVER_VERSION   表示数据库服务器版本号。

  • PDO::ATTR_CLIENT_VERSION   表示数据库客户端版本号。

了解了getAttribute() 方法,接下来我们来看一下setAttribute() 方法的相关知识,一起看看吧。

<strong><span style="font-size: 20px;">setAttribute()</span></strong> 方法

setAttribute() 方法可以用来设置数据库句柄的属性,setAttribute() 就比getAttribute()要稍微复杂些了,它的语法格式如下:

PDO::setAttribute(int $attribute, mixed $value)

其中我们需要注意的是:

这个方法需要两个参数,第一个参数 $attribute 提供 PDO 对象特定的属性名,第二个参数 $value 则是为这个指定的属性赋一个值。

PDO::ATTR_CASE   表示可以强制列名为指定的大小写,其中PDO::CASE_LOWER   表示强制列名小写;PDO::CASE_NATURAL   表示保留数据库驱动返回的列名;PDO::CASE_UPPER   表示强制列名大写。

PDO::ATTR_ERRMODE   表示为错误报告,其中PDO::ERRMODE_SILENT   表示为仅设置错误代码;PDO::ERRMODE_WARNING   表示为引发 E_WARNING 错误;PDO::ERRMODE_EXCEPTION   表示为抛出 exceptions 异常。

PDO::ATTR_ORACLE_NULLS

<strong><span style="font-size: 20px;">getAttribute()</span></strong>Méthode

getAttribute() La méthode ne doit fournir qu'un seul paramètre et peut transmettre un nom d'attribut spécifique représentant ce paramètre. Après une exécution réussie, le nom de l'attribut sera retourné. La valeur spécifiée, sinon NULL est retourné. Il est facile à comprendre. Son format de syntaxe est le suivant :

<?php
    header("Content-Type: text/html;charset=utf-8");
    $pdo = new PDO(&#39;mysql:dbname=test;host=127.0.0.1&#39;,&#39;root&#39;,&#39;root&#39;,$opt);
    $pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_UPPER);
    echo &#39;PDO::ATTR_CASE属性的值为:&#39;.$pdo -> getAttribute(PDO::ATTR_CASE);
    $pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);
    echo &#39;<br>PDO::ATTR_CASE属性的值为:&#39;.$pdo -> getAttribute(PDO::ATTR_CASE);
    $pdo->setAttribute(PDO::ATTR_CASE, PDO::CASE_NATURAL);
    echo &#39;<br>PDO::ATTR_CASE属性的值为:&#39;.$pdo -> getAttribute(PDO::ATTR_CASE);
?>

Ce qu'il faut noter est :

Le paramètre $attribute est l'un des PDO::ATTR_* code> constantes, appliquées Il existe de nombreuses constantes dans la connexion à la base de données <img src="https://img.php.cn/upload/image/950/586/449/1635413103548982.png" title="1635413103548982.png" alt="Comment définir et obtenir les attributs PDO dans lapprentissage des bases de données PHP ?">

Jetons d'abord un coup d'œil à l'exemple, puis résumons-le comme suit :

rrreee

Résultat de sortie : 🎜🎜🎜Comment définir et obtenir les attributs PDO dans lapprentissage des bases de données PHP ?🎜🎜À partir des résultats ci-dessus, nous résumons :🎜🎜 PDO::ATTR_AUTOCOMMIT indique si PDO désactive la fonction de soumission automatique, PDO::ATTR_ERRMODE indique le mode actuel de gestion des erreurs PDO, PDO::ATTR_CASE indique la table Conversion de casse des caractères du champ, PDO::ATTR_ORACLE_NULLS représente la conversion de chaînes vides en SQL null, PDO::ATTR_PERSISTENT représente le programme d'application pour obtenir les données taille à l'avance. 🎜🎜🎜Plus que cela, permettez-moi de résumer quelques constantes couramment utilisées appliquées aux connexions de bases de données : 🎜
  • 🎜PDO::ATTR_CONNECTION_STATUS représente des informations uniques liées à l’état de la connexion. 🎜
  • 🎜PDO::ATTR_SERVER_INFO Représente les informations du serveur spécifiques à la base de données. 🎜
  • 🎜PDO::ATTR_SERVER_VERSION représente le numéro de version du serveur de base de données. 🎜
  • 🎜PDO::ATTR_CLIENT_VERSION représente le numéro de version du client de la base de données. 🎜
🎜Maintenant que nous comprenons la méthode getAttribute(), jetons un coup d'œil aux connaissances associées de la méthode setAttribute(). 🎜🎜<strong><span style="font-size: 20px;">setAttribute()</span></strong>Méthode🎜🎜setAttribute() La méthode peut être utilisée pour définir les attributs du handle de base de données. setAttribute() est légèrement plus compliqué que getAttribute(). Son syntaxe Le format est le suivant : 🎜rrreee🎜Ce à quoi nous devons prêter attention est : 🎜🎜🎜Cette méthode nécessite deux paramètres Le premier paramètre $attribute fournit le nom d'attribut spécifique de l'objet PDO, et le deuxième paramètre $value attribue une valeur à l'attribut spécifié. 🎜🎜PDO::ATTR_CASE signifie que les noms de colonnes peuvent être forcés à être dans la casse spécifiée, où PDO::CASE_LOWER signifie que les noms de colonnes doivent être forcés à être en minuscules ; les noms renvoyés par le pilote de base de données sont conservés ; PDO : CASE_UPPER signifie forcer les noms de colonnes à être en majuscules. 🎜🎜PDO::ATTR_ERRMODE représente un rapport d'erreur, où PDO::ERRMODE_SILENT représente uniquement la définition du code d'erreur ; PDO::ERRMODE_WARNING représente le déclenchement d'une erreur E_WARNING ; PDO::ERRMODE_EXCEPTION représente le lancement d'exceptions. 🎜🎜PDO::ATTR_ORACLE_NULLS est exprimé comme étant disponible dans tous les pilotes, sans se limiter à Oracle, convertissant les chaînes NULL et vides, où PDO::NULL_NATURAL est exprimé comme n'étant pas converti ; car la conversion des chaînes vides est convertie en NULL ; PDO::NULL_TO_STRING signifie la conversion de NULL en chaînes vides. 🎜🎜Ensuite, prenons un exemple pour définir les attributs du handle de base de données à l'aide de la méthode setAttribute(). L'exemple est le suivant : 🎜rrreee🎜Résultat de sortie : 🎜🎜🎜🎜🎜🎜Dans l'exemple ci-dessus, la base de données est définie. en utilisant la méthode setAttribute() Les propriétés du handle. Ensuite, je vais trier les noms d'attributs communs disponibles et les valeurs qui peuvent être utilisées : 🎜
  • PDO::ATTR_STRINGIFY_FETCHES signifie convertir la valeur en chaîne lors de l'extraction ; PDO::ATTR_STRINGIFY_FETCHES    表示提取的时候将数值转换为字符串;

  • PDO::ATTR_STATEMENT_CLASS   表示设置从 PDOStatement 派生的用户提供的语句类。不能用于持久的 PDO 实例。

  • PDO::ATTR_AUTOCOMMIT   表示是否自动提交每个单独的语句,它在在 OCI,Firebird 以及 MySQL 中可用。

  • PDO::ATTR_DEFAULT_FETCH_MODE   表示设置默认的提取模式。

  • PDO::MYSQL_ATTR_USE_BUFFERED_QUERY   表示使用缓冲查询,它在MySQL数据库中可用。

其中我们还需要注意的有:PDO::ATTR_TIMEOUT 表示指定超时的秒数。不同驱动之间可能会有差异,比如 SQLite 等待的时间达到此值后就会放弃获取可写锁,但其他驱动可能会将此值解释为一个连接或读取超时的间隔;

PDO::ATTR_EMULATE_PREPARES

PDO::ATTR_STATEMENT_CLASS signifie définir l'utilisateur dérivé de PDOStatement. classe d'instruction fournie. Ne peut pas être utilisé avec des instances PDO persistantes.

PDO::ATTR_AUTOCOMMIT Indique s'il faut valider automatiquement chaque instruction individuelle. Il est disponible dans OCI, Firebird et MySQL. 🎜🎜🎜PDO::ATTR_DEFAULT_FETCH_MODE signifie définir le mode d'extraction par défaut. 🎜🎜🎜PDO::MYSQL_ATTR_USE_BUFFERED_QUERY signifie utiliser une requête tamponnée, disponible dans la base de données MySQL. 🎜🎜Nous devons également prêter attention aux éléments suivants : PDO::ATTR_TIMEOUT représente le nombre de secondes pour le délai d'attente spécifié. Il peut y avoir des différences entre les différents pilotes. Par exemple, SQLite renoncera à acquérir un verrou en écriture après avoir attendu cette valeur, mais d'autres pilotes peuvent interpréter cette valeur comme un intervalle de délai de connexion ou de lecture 🎜🎜 PDO::ATTR_EMULATE_PREPARES Indique l'activation ou la désactivation de la simulation des instructions préparées. Certains pilotes n'ont pas ou peu de prise en charge du prétraitement local. Utilisez ce paramètre pour forcer PDO à toujours émuler les instructions préparées ou à essayer d'utiliser des instructions préparées locales. Si le pilote ne parvient pas à préparer correctement la requête en cours, il reviendra toujours à la simulation des instructions préparées. 🎜🎜Si vous êtes intéressé, vous pouvez cliquer sur "🎜Tutoriel vidéo PHP🎜" pour en savoir plus sur les connaissances PHP. 🎜

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!

Déclaration:
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