Heim Backend-Entwicklung PHP-Tutorial PDO-vorbereitete Anweisung PDOStatement-Objekt

PDO-vorbereitete Anweisung PDOStatement-Objekt

Jul 03, 2018 pm 04:53 PM
pdo 预处理语句

In diesem Artikel wird hauptsächlich die Verwendung von PDO-Vorbereitungsanweisungen für PDOStatement-Objekte vorgestellt. In diesem Artikel werden die Methoden von PDOStatement und Beispiele für gängige Methoden vorgestellt.

PDOs Unterstützung für vorbereitete Anweisungen Sie müssen das Klassenobjekt PDOStatement verwenden, dieses Klassenobjekt wird jedoch nicht über das Schlüsselwort NEW instanziiert, sondern direkt nach der Vorbereitung einer vorverarbeiteten SQL-Anweisung im Datenbankserver über die Methode Prepare() im PDO-Objekt zurückgegeben. Wenn das PDOStatement-Klassenobjekt, das durch vorheriges Ausführen der query()-Methode im PDO-Objekt zurückgegeben wurde, nur ein Ergebnismengenobjekt darstellt. Und wenn das PDOStatement-Klassenobjekt, das durch die Ausführung der Prepare()-Methode im PDO-Objekt generiert wird, ein Abfrageobjekt ist, kann es parametrisierte SQL-Befehle definieren und ausführen. Alle Mitgliedsmethoden in der PDOStatement-Klasse lauten wie folgt:

PDOStatement::bindColumn — 绑定一列到一个 PHP 变量
PDOStatement::bindParam — 绑定一个参数到指定的变量名
PDOStatement::bindValue — 把一个值绑定到一个参数
PDOStatement::closeCursor — 关闭游标,使语句能再次被执行。
PDOStatement::columnCount — 返回结果集中的列数
PDOStatement::debugDumpParams — 打印一条 SQL 预处理命令
PDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE
PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息
PDOStatement::execute — 执行一条预处理语句
PDOStatement::fetch — 从结果集中获取下一行
PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组
PDOStatement::fetchColumn — 从结果集中的下一行返回单独的一列。
PDOStatement::fetchObject — 获取下一行并作为一个对象返回。
PDOStatement::getAttribute — 检索一个语句属性
PDOStatement::getColumnMeta — 返回结果集中一列的元数据
PDOStatement::nextRowset — 在一个多行集语句句柄中推进到下一个行集
PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数
PDOStatement::setAttribute — 设置一个语句属性
PDOStatement::setFetchMode — 为语句设置默认的获取模式。
Nach dem Login kopieren

1. Prepare-Anweisung

Führen Sie wiederholt eine SQL-Abfrage aus und verwenden Sie bei jeder Iteration unterschiedliche Parameter In diesem Fall ist die Verwendung vorbereiteter Anweisungen am effizientesten. Um vorbereitete Anweisungen zu verwenden, müssen Sie zunächst eine „SQL-Anweisung“ auf dem Datenbankserver vorbereiten, diese muss jedoch nicht sofort ausgeführt werden. PDO unterstützt die Verwendung der „Platzhalter“-Syntax, um Variablen an diese vorverarbeitete SQL-Anweisung zu binden. Wenn bei einer vorbereiteten SQL-Anweisung bei jeder Ausführung einige Spaltenwerte geändert werden müssen, müssen „Platzhalter“ anstelle bestimmter Spaltenwerte verwendet werden. Es gibt zwei Syntaxen für die Verwendung von Platzhaltern in PDO: „benannte Parameter“ und „Fragezeichenparameter“. Welche Syntax Sie verwenden, hängt von Ihren persönlichen Vorlieben ab.

INSERT-Anweisung mit benannten Parametern als Platzhalter:

$dbh->prepare(“insert into contactinfo(name,address,phone) values(:name,:address,:phone)”);
Nach dem Login kopieren

Sie müssen eine Zeichenfolge als „benannten Parameter“ anpassen. Jeder benannte Parameter muss mit einem Doppelpunkt (:) und dem Parameter beginnen Der Name muss aussagekräftig sein und vorzugsweise mit dem entsprechenden Feldnamen übereinstimmen.
Anweisung mit Fragezeichen-Parameter (?) als Platzhalter einfügen:

$dbh->prepare(“insert into contactinfo(name,address,phone) values(?,?,?)”);
Nach dem Login kopieren

Der Fragezeichen-Parameter muss der Positionsreihenfolge der Felder entsprechen. Unabhängig davon, welcher Parameter als Abfrage aus Platzhaltern verwendet wird oder in der Anweisung keine Platzhalter verwendet werden, müssen Sie die Methode Prepare () im PDO-Objekt verwenden, um die Abfrage vorzubereiten, die für die iterative Ausführung verwendet wird, und gibt a zurück PDOStatement-Klassenobjekt.

2. Bind-Parameter

Wenn die SQL-Anweisung auf dem Datenbankserver über die Prepare()-Methode im PDO-Objekt vorbereitet wird, benötigen Sie Platzhalter um die Eingabeparameter bei jeder Ausführung zu ersetzen. Über die Methode bindParam() im PDOStatement-Objekt können Sie Parametervariablen an vorbereitete Platzhalter binden (Position oder Name müssen übereinstimmen). Der Prototyp der Methode bindParam() lautet wie folgt:

bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )
Nach dem Login kopieren

Der erste Parameterparameter ist erforderlich. Wenn die Platzhaltersyntax in der vorbereiteten Abfrage Namensparameter verwendet, wird die Namensparameterzeichenfolge als bindParam()-Methode verwendet wird als erster Parameter bereitgestellt. Wenn die Platzhaltersyntax ein Fragezeichenargument verwendet, wird der Indexoffset des Spaltenwertplatzhalters in der vorbereiteten Abfrage als erstes Argument an die Methode übergeben.

Die zweite Parametervariable ist ebenfalls optional und liefert den Wert des durch den ersten Parameter angegebenen Platzhalters. Da der Parameter als Referenz übergeben wird, können nur Variablen als Parameter bereitgestellt werden, keine Werte direkt.

Der dritte Parameter data_type ist optional und legt den Datentyp für den aktuell gebundenen Parameter fest. Können die folgenden Werte sein.

PDO::PARAM_BOOL repräsentiert den booleschen Datentyp.
PDO::PARAM_NULL repräsentiert den NULL-Typ in SQL.
PDO::PARAM_INT repräsentiert den INTEGER-Datentyp in SQL.
PDO::PARAM_STR repräsentiert CHAR, VARCHAR und andere String-Datentypen in SQL.
PDO::PARAM_LOB repräsentiert den Datentyp für große Objekte in SQL.

Der vierte Parameter Länge ist optional und wird verwendet, um die Länge des Datentyps anzugeben.

Der fünfte Parameter „driver_options“ ist optional und stellt über diesen Parameter alle datenbanktreiberspezifischen Optionen bereit.
Beispiel für die Parameterbindung mit benannten Parametern als Platzhalter:

<?php
//...省略PDO连接数据库代码
$query = "insert into contactinfo (name,address,phone) values(:name,:address,:phone)";
$stmt = $dbh->prepare($query);          //调用PDO对象中的prepare()方法
 
$stmt->blinparam(&#39;:name&#39;,$name);        //将变量$name的引用绑定到准备好的查询名字参数":name"中
$stmt->blinparam(&#39;:address&#39;,$address);
$stmt->blinparam(&#39;:phone&#39;,phone);
//...
?>
Nach dem Login kopieren

Beispiel für die Parameterbindung mit Fragezeichen (?) als Platzhalter:

<?php
//...省略PDO连接数据库代码
$query = "insert into contactinfo (name,address,phone) values(?,?,?)";
$stmt = $dbh->prepare($query);          //调用PDO对象中的prepare()方法
 
$stmt->blinparam(1,$name,PDO::PARAM_STR);        //将变量$name的引用绑定到准备好的查询名字参数":name"中
$stmt->blinparam(2,$address,PDO::PARAM_STR);
$stmt->blinparam(3,phone,PDO::PARAM_STR,20);
//...
?>
Nach dem Login kopieren

3 Führen Sie die vorbereitete Anweisung aus

Nachdem die vorbereitete Anweisung abgeschlossen und die entsprechenden Parameter gebunden sind, können Sie die vorbereitete Anweisung im Datenbankcache wiederholt ausführen, indem Sie die Methode „execute()“ im PDOStatement-Klassenobjekt aufrufen. Im folgenden Beispiel wird die Vorverarbeitung verwendet, um kontinuierlich dieselbe INSERT-Anweisung in der zuvor bereitgestellten Kontaktinfo-Tabelle auszuführen, und zwei Datensätze werden durch Ändern unterschiedlicher Parameter hinzugefügt. Wie unten gezeigt:

<?php 
try {
     $dbh = new PDO(&#39;mysql:dbname=testdb;host=localhost&#39;, $username, $passwd);
}catch (PDOException $e){
    echo &#39;数据库连接失败:&#39;.$e->getMessage();
    exit;
}
 
$query = "insert into contactinfo (name,address,phone) values(?,?,?)";
$stmt = $dbh->prepare($query);
 
$stmt->blinparam(1,$name);      
$stmt->blinparam(2,$address);
$stmt->blinparam(3,phone);
 
$name = "赵某某";
$address = "海淀区中关村";
$phone = "15801688348";
 
$stmt->execute();           //执行参数被绑定后的准备语句
?>
Nach dem Login kopieren

Wenn Sie nur Eingabeparameter übergeben und viele solcher Parameter übergeben werden müssen, ist die unten gezeigte Verknüpfungssyntax sehr hilfreich. Dies ist die zweite Möglichkeit, Eingabeparameter für eine vorverarbeitete Abfrage während der Ausführung zu ersetzen, indem in der Methode „execute()“ ein optionaler Parameter bereitgestellt wird, bei dem es sich um ein Array benannter Parameterplatzhalter in der vorbereiteten Abfrage handelt. Mit dieser Syntax können Sie den Aufruf von $stmt->bindParam() eliminieren. Ändern Sie das obige Beispiel wie folgt:

<?php 
//...省略PDO连接数据库代码
$query = "insert into contactinfo (name,address,phone) values(?,?,?)";
$stmt = $dbh->prepare($query); 
 
//传递一个数组为预处理查询中的命名参数绑定值,并执行一次。
$stmt->execute(array("赵某某","海淀区","15801688348"));
?>
Nach dem Login kopieren

Wenn außerdem eine INSERT-Anweisung ausgeführt wird und in der Datentabelle ein automatisch wachsendes ID-Feld vorhanden ist, können Sie zum Abrufen die lastinsertId()-Methode im PDO-Objekt verwenden die letzte Einfügung in die Datentabelle. Wenn Sie überprüfen müssen, ob andere DML-Anweisungen erfolgreich ausgeführt werden, können Sie die Anzahl der Zeilen, die sich auf den Datensatz auswirken, über die Methode rowCount() im PDOStatement-Klassenobjekt ermitteln.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

Einführung in die Importmethode der benutzerdefinierten Tag-Bibliothek von thinkPHP2.1

Verwenden Sie Pthreads, um echte Ergebnisse zu erzielen PHP-Multithreading-Methode

Das obige ist der detaillierte Inhalt vonPDO-vorbereitete Anweisung PDOStatement-Objekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Methode PDO::prepare() in Lösung für PHP Schwerwiegender Fehler: Aufruf der undefinierten Methode PDO::prepare() in Jun 22, 2023 pm 06:40 PM

PHP ist eine beliebte Webentwicklungssprache, die schon seit langem verwendet wird. Die in PHP integrierte PDO-Klasse (PHP Data Object) ist für uns eine gängige Möglichkeit, bei der Entwicklung von Webanwendungen mit der Datenbank zu interagieren. Ein Problem, auf das einige PHP-Entwickler jedoch häufig stoßen, besteht darin, dass sie bei Verwendung der PDO-Klasse zur Interaktion mit der Datenbank eine Fehlermeldung wie diese erhalten: PHPFatalerror:CalltoundefinedmethodPDO::prep

Wie verwende ich die PDO_PGSQL-Erweiterung von PHP? Wie verwende ich die PDO_PGSQL-Erweiterung von PHP? Jun 02, 2023 pm 06:10 PM

Als beliebte Programmiersprache wird PHP häufig im Bereich der Webentwicklung eingesetzt. Unter diesen ist die PDO_PGSQL-Erweiterung von PHP eine häufig verwendete PHP-Erweiterung. Sie bietet eine interaktive Schnittstelle mit der PostgreSQL-Datenbank und kann die Datenübertragung und Interaktion zwischen PHP und PostgreSQL realisieren. In diesem Artikel wird detailliert beschrieben, wie Sie die PDO_PGSQL-Erweiterung von PHP verwenden. 1. Was ist die PDO_PGSQL-Erweiterung? PDO_PGSQL ist eine Erweiterungsbibliothek von PHP, die

PHP und PDO: So führen Sie Masseneinfügungen und -aktualisierungen durch PHP und PDO: So führen Sie Masseneinfügungen und -aktualisierungen durch Jul 28, 2023 pm 07:41 PM

PHP und PDO: So führen Sie Stapeleinfügungen und -aktualisierungen durch. Einführung: Wenn Sie PHP zum Schreiben datenbankbezogener Anwendungen verwenden, stoßen Sie häufig auf Situationen, in denen Sie Daten stapelweise einfügen und aktualisieren müssen. Der traditionelle Ansatz besteht darin, Schleifen zur Ausführung mehrerer Datenbankoperationen zu verwenden, diese Methode ist jedoch ineffizient. Das PDO (PHPDataObject) von PHP bietet eine effizientere Möglichkeit, Batch-Einfüge- und Aktualisierungsvorgänge durchzuführen. In diesem Artikel wird erläutert, wie Sie PDO zum Implementieren von Batch-Einfüge- und Aktualisierungsvorgängen verwenden. 1. Einführung in PDO: PDO ist PH

PHP PDO vs. MySQL: Vergleich und Kontrast PHP PDO vs. MySQL: Vergleich und Kontrast Feb 19, 2024 pm 12:24 PM

PDOPDO ist eine objektorientierte Abstraktionsschicht für den Datenbankzugriff, die eine einheitliche Schnittstelle für PHP bereitstellt und es Ihnen ermöglicht, denselben Code für die Interaktion mit verschiedenen Datenbanken (z. B. Mysql, Postgresql, Oracle) zu verwenden. PDO verbirgt die Komplexität der zugrunde liegenden Datenbankverbindungen und vereinfacht Datenbankoperationen. Vorteile und Nachteile Vorteile: Einheitliche Schnittstelle, unterstützt mehrere Datenbanken, vereinfacht Datenbankoperationen, reduziert Entwicklungsschwierigkeiten, stellt vorbereitete Anweisungen bereit, verbessert die Sicherheit, unterstützt die Transaktionsverarbeitung. Nachteile: Die Leistung ist möglicherweise etwas geringer als bei nativen Erweiterungen, ist auf externe Bibliotheken angewiesen, kann den Overhead erhöhen. Democode verwendet PDO Connect zur MySQL-Datenbank: $db=newPDO("mysql:host=localhost;dbnam

PHP und PDO: Umgang mit JSON-Daten in einer Datenbank PHP und PDO: Umgang mit JSON-Daten in einer Datenbank Jul 29, 2023 pm 05:17 PM

PHP und PDO: Umgang mit JSON-Daten in Datenbanken In der modernen Webentwicklung ist die Verarbeitung und Speicherung großer Datenmengen eine sehr wichtige Aufgabe. Mit der Popularität mobiler Anwendungen und Cloud Computing werden immer mehr Daten in Datenbanken im JSON-Format (JavaScript Object Notation) gespeichert. Als häufig verwendete serverseitige Sprache bietet die PDO-Erweiterung (PHPDataObject) von PHP eine bequeme Möglichkeit, Datenbanken zu verarbeiten und zu betreiben. Buch

PHP und PDO: So führen Sie Paging-Abfragen durch und zeigen Daten an PHP und PDO: So führen Sie Paging-Abfragen durch und zeigen Daten an Jul 29, 2023 pm 04:10 PM

PHP und PDO: Abfragen und Anzeigen von Daten auf Seiten Bei der Entwicklung von Webanwendungen ist das Abfragen und Anzeigen von Daten auf Seiten eine sehr häufige Anforderung. Durch Paging können wir eine bestimmte Datenmenge gleichzeitig anzeigen und so die Seitenladegeschwindigkeit und das Benutzererlebnis verbessern. In PHP können die Funktionen der Paging-Abfrage und der Anzeige von Daten einfach mithilfe der PHP Data Object (PDO)-Bibliothek realisiert werden. In diesem Artikel wird erläutert, wie Sie PDO in PHP verwenden, um Daten seitenweise abzufragen und anzuzeigen, und entsprechende Codebeispiele bereitstellen. 1. Erstellen Sie Datenbank- und Datentabellen

So stellen Sie mithilfe von PDO eine Verbindung zur Redis-Datenbank her So stellen Sie mithilfe von PDO eine Verbindung zur Redis-Datenbank her Jul 28, 2023 pm 04:29 PM

So verwenden Sie PDO zum Herstellen einer Verbindung zur Redis-Datenbank. Redis ist eine Open-Source-In-Memory-Speicher-Schlüsselwertdatenbank, die häufig in Cache-, Warteschlangen- und anderen Szenarien verwendet wird. In der PHP-Entwicklung kann der Einsatz von Redis die Leistung und Stabilität von Anwendungen effektiv verbessern. Durch die PDO-Erweiterung (PHPDataObjects) können wir die Redis-Datenbank bequemer verbinden und betreiben. In diesem Artikel wird anhand von Codebeispielen erläutert, wie Sie mit PDO eine Verbindung zu einer Redis-Datenbank herstellen. Installieren Sie zu Beginn die Redis-Erweiterung

PHP und PDO: So führen Sie eine Volltextsuche in einer Datenbank durch PHP und PDO: So führen Sie eine Volltextsuche in einer Datenbank durch Jul 30, 2023 pm 04:33 PM

PHP und PDO: So führen Sie eine Volltextsuche in einer Datenbank durch In modernen Webanwendungen ist die Datenbank ein sehr wichtiger Bestandteil. Die Volltextsuche ist eine sehr nützliche Funktion, wenn wir in großen Datenmengen nach bestimmten Informationen suchen müssen. PHP und PDO (PHPDataObjects) bieten eine einfache, aber leistungsstarke Möglichkeit, Volltextsuchen in Datenbanken durchzuführen. In diesem Artikel wird die Verwendung von PHP und PDO zur Implementierung der Volltextsuche vorgestellt und Beispielcode zur Veranschaulichung des Prozesses bereitgestellt. Erste

See all articles