Heim >Backend-Entwicklung >PHP-Problem >Wie werden PDO-Attribute beim PHP-Datenbanklernen festgelegt und abgerufen?

Wie werden PDO-Attribute beim PHP-Datenbanklernen festgelegt und abgerufen?

WBOY
WBOYOriginal
2021-10-28 17:58:332247Durchsuche

Im vorherigen Artikel habe ich Ihnen „Wie gehe ich mit Fehlern in PDO für das Lernen von PHP-Datenbanken um?“ vorgestellt. 》, das die relevanten Kenntnisse der PDO-Fehlerbehandlung in PHP im Detail vorstellt. In diesem Artikel werfen wir einen Blick darauf, wie man PDO-Attribute in PHP setzt und erhält. Hoffe, es hilft allen!

Wie werden PDO-Attribute beim PHP-Datenbanklernen festgelegt und abgerufen?

Im vorherigen Artikel haben wir etwas über Probleme im Zusammenhang mit der PDO-Fehlerbehandlung in PHP erfahren. Anschließend erfahren Sie, wie Sie PDO-Attribute festlegen und abrufen. Es gibt viele Eigenschaften im PDO-Objekt, die verwendet werden können, um das Verhalten des PDO anzupassen oder den zugrunde liegenden Treiberstatus abzurufen.

Wenn beim Erstellen eines PDO-Objekts im letzten Parameter im Konstruktor keine Attributoptionen festgelegt sind, können Sie setAttribute() und getAttribute im PDO-Objekt verwenden, nachdem das Objekt erstellt wurde. () Methode legt die Werte dieser Eigenschaften fest und ruft sie ab. Dann schauen wir uns diese beiden Methoden gemeinsam an. 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);
?>

输出结果:

Wie werden PDO-Attribute beim PHP-Datenbanklernen festgelegt und abgerufen?

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

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><strong><span style="font-size: 20px;">getAttribute()</span></strong>Methode

getAttribute() Die Methode muss nur einen Parameter bereitstellen und kann einen bestimmten Attributnamen übergeben, der diesen Parameter darstellt. Nach erfolgreicher Ausführung der Attributname Es wird der angegebene Wert zurückgegeben, andernfalls wird NULL zurückgegeben. Es ist leicht zu verstehen. Das Syntaxformat ist wie folgt:

<?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);
?>

Was zu beachten ist:

Der Parameter $attribute ist einer der PDO::ATTR_* Code> Konstanten, angewendet Es gibt viele Konstanten in der Datenbankverbindung <img src="https://img.php.cn/upload/image/950/586/449/1635413103548982.png" title="1635413103548982.png" alt="Wie werden PDO-Attribute beim PHP-Datenbanklernen festgelegt und abgerufen?">

Schauen wir uns zuerst das Beispiel an und fassen es dann wie folgt zusammen:

rrreee

Ausgabeergebnis: 🎜🎜🎜Wie werden PDO-Attribute beim PHP-Datenbanklernen festgelegt und abgerufen?🎜🎜Aus den obigen Ergebnissen fassen wir zusammen:🎜🎜 PDO::ATTR_AUTOCOMMIT gibt an, ob PDO die automatische Übermittlungsfunktion deaktiviert, PDO::ATTR_ERRMODE gibt den aktuellen PDO-Fehlerbehandlungsmodus an, PDO::ATTR_CASE gibt die Tabellen-Case-Konvertierung von Feldzeichen an, PDO::ATTR_ORACLE_NULLS stellt die Konvertierung leerer Zeichenfolgen in SQL Null dar, PDO::ATTR_PERSISTENT stellt das Anwendungsprogramm zum Abrufen der Daten dar Größe im Voraus. 🎜🎜🎜Lassen Sie mich darüber hinaus einige häufig verwendete Konstanten zusammenfassen, die auf Datenbankverbindungen angewendet werden: 🎜
  • 🎜PDO::ATTR_CONNECTION_STATUS stellt eindeutige Informationen zum Verbindungsstatus dar. 🎜
  • 🎜PDO::ATTR_SERVER_INFO Stellt datenbankspezifische Serverinformationen dar. 🎜
  • 🎜PDO::ATTR_SERVER_VERSION stellt die Versionsnummer des Datenbankservers dar. 🎜
  • 🎜PDO::ATTR_CLIENT_VERSION stellt die Versionsnummer des Datenbank-Clients dar. 🎜
🎜Da wir nun die Methode getAttribute() verstanden haben, werfen wir einen Blick auf die zugehörigen Kenntnisse der Methode setAttribute(). 🎜🎜<strong><span style="font-size: 20px;">setAttribute()</span></strong><strong><span style="font-size: 20px;">setAttribute()</span></strong>Methode🎜🎜setAttribute() Die Methode kann verwendet werden, um die Attribute des Datenbank-Handles festzulegen. setAttribute() ist etwas komplizierter als getAttribute(). Es ist Syntax Das Format ist wie folgt: 🎜rrreee🎜Was wir beachten müssen, ist: 🎜🎜🎜Diese Methode erfordert zwei Parameter. Der erste Parameter $attribute gibt den spezifischen Attributnamen des PDO-Objekts an. und der zweite Parameter $value weist dem angegebenen Attribut einen Wert zu. 🎜🎜PDO::ATTR_CASE bedeutet, dass Spaltennamen in der angegebenen Groß- und Kleinschreibung angegeben werden können, wobei PDO::CASE_LOWER bedeutet, dass Spaltennamen in Kleinbuchstaben geschrieben werden müssen; PDO::CASE_NATURAL bedeutet, dass die Spalte Vom Datenbanktreiber zurückgegebene Namen bleiben erhalten; PDO: :CASE_UPPER bedeutet, dass Spaltennamen in Großbuchstaben geschrieben werden müssen. 🎜🎜PDO::ATTR_ERRMODE steht für einen Fehlerbericht, wobei PDO::ERRMODE_SILENT nur für das Festlegen des Fehlercodes steht; PDO::ERRMODE_WARNING für das Auslösen eines E_WARNING-Fehlers; PDO::ERRMODE_EXCEPTION für das Auslösen von Ausnahmen. 🎜🎜PDO::ATTR_ORACLE_NULLS wird als in allen Treibern verfügbar ausgedrückt, nicht beschränkt auf Oracle, wobei NULL und leere Zeichenfolgen konvertiert werden, wobei PDO::NULL_NATURAL als nicht konvertierend ausgedrückt wird; Beim Konvertieren werden leere Zeichenfolgen in NULL umgewandelt. PDO::NULL_TO_STRING bedeutet, dass NULL in leere Zeichenfolgen umgewandelt wird. 🎜🎜Als nächstes nehmen wir ein Beispiel zum Festlegen der Attribute des Datenbankhandles mithilfe der setAttribute()-Methode. Das Beispiel lautet wie folgt: 🎜rrreee🎜Ausgabeergebnis: 🎜🎜🎜🎜🎜🎜Im obigen Beispiel ist die Datenbank festgelegt Verwenden der setAttribute()-Methode. Die Eigenschaften des Handles. Als nächstes sortiere ich die verfügbaren allgemeinen Attributnamen und die Werte, die verwendet werden können: 🎜
  • PDO::ATTR_STRINGIFY_FETCHES bedeutet, dass der Wert beim Extrahieren in eine Zeichenfolge konvertiert wird; 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 bedeutet, den vom PDOStatement abgeleiteten Benutzer festzulegen bereitgestellte Anweisungsklasse. Kann nicht mit persistenten PDO-Instanzen verwendet werden.

PDO::ATTR_AUTOCOMMIT Gibt an, ob jede einzelne Anweisung automatisch übermittelt werden soll. Es ist in OCI, Firebird und MySQL verfügbar. 🎜🎜🎜PDO::ATTR_DEFAULT_FETCH_MODE bedeutet das Festlegen des Standardextraktionsmodus. 🎜🎜🎜PDO::MYSQL_ATTR_USE_BUFFERED_QUERY bedeutet die Verwendung einer gepufferten Abfrage, die in der MySQL-Datenbank verfügbar ist. 🎜🎜Außerdem müssen wir Folgendes beachten: PDO::ATTR_TIMEOUT stellt die Anzahl der Sekunden für das angegebene Timeout dar. Es kann beispielsweise Unterschiede zwischen verschiedenen Treibern geben, nachdem SQLite auf diesen Wert gewartet hat, aber andere Treiber interpretieren diesen Wert möglicherweise als Verbindungs- oder Lese-Timeout-Intervall 🎜🎜 PDO::ATTR_EMULATE_PREPARES Gibt an, dass die Simulation vorbereiteter Anweisungen aktiviert oder deaktiviert wird. Einige Treiber unterstützen die lokale Vorverarbeitung nicht oder nur eingeschränkt. Mit dieser Einstellung können Sie PDO zwingen, vorbereitete Anweisungen immer zu emulieren, oder zu versuchen, lokal vorbereitete Anweisungen zu verwenden. Wenn der Treiber die aktuelle Abfrage nicht erfolgreich vorbereiten kann, greift er immer auf die Simulation vorbereiteter Anweisungen zurück. 🎜🎜Bei Interesse können Sie auf „🎜PHP-Video-Tutorial🎜“ klicken, um mehr über PHP-Kenntnisse zu erfahren. 🎜

Das obige ist der detaillierte Inhalt vonWie werden PDO-Attribute beim PHP-Datenbanklernen festgelegt und abgerufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn