Heim >Backend-Entwicklung >PHP-Problem >So verwenden Sie Prerare in PHP
Die Verwendung von prerare in PHP ist „PDO::prepare“, was bedeutet, dass die auszuführende Anweisung vorbereitet und das Anweisungsobjekt zurückgegeben wird. Die Verwendungssyntax lautet wie folgt: „public PDO::prepare(string $statement, array $driver_options = array() )".
Das Betriebssystem dieses Tutorials: Windows 10-System, PHP-Version 8.1.3, Dell G3-Computer.
Verwendung von PHP Prepare
PDO::prepare
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PHP 8,PECL pdo >= 0.1.0)
PDO::prepare — Bereiten Sie die auszuführende Anweisung vor und geben Sie das Anweisungsobjekt zurück
Beschreibung
public PDO::prepare(string $statement, array $driver_options = array()): PDOStatement为 PDOStatement::execute() 方法准备待执行的 SQL 语句。 语句模板可以包含零个或多个参数占位标记,格式是命名(:name)或问号(?)的形式,当它执行时将用真实数据取代。 在同一个语句模板里,命名形式和问号形式不能同时使用;只能选择其中一种参数形式。 请用参数形式绑定用户输入的数据,不要直接字符串拼接到查询里。
Beim Aufruf von PDOStatement::execute() muss die Parameterplatzhaltermarkierung jedes Werts eindeutig sein. Sofern der Simulationsmodus nicht aktiviert ist, können Parameter mit demselben Namen nicht in derselben Anweisung verwendet werden.
Hinweis:
Parameterplatzhalter können buchstäblich nur vollständige Daten anzeigen. Es darf nicht Teil eines Literals, eines Schlüsselworts, eines Bezeichners oder eines anderen beliebigen Bereichs sein. Beispiel: Sie können nicht mehrere Werte an einen einzelnen Parameter binden und dann IN() zur Abfrage in einer SQL-Anweisung verwenden.
Wenn Sie dieselbe SQL-Anweisung mehrmals mit unterschiedlichen Parametern über PDO::prepare() und PDOStatement::execute() aufrufen, wird die Leistung der Anwendung verbessert – der Treiber kann es dem Client/Server ermöglichen, die Abfrage zwischenzuspeichern und Metainformationen. Gleichzeitig können durch den Aufruf von PDO::prepare() und PDOStatement::execute() auch SQL-Injection-Angriffe verhindert werden, ohne dass Anführungszeichen und Escape-Parameter manuell hinzugefügt werden müssen.
Wenn der integrierte Treiber keine Parameter unterstützt, simuliert PDO die Funktion von Parametern. Wenn der Treiber nur einen der Stile (benannte Parameter und Fragezeichenparameter) unterstützt, wird er automatisch in den anderen Stil umgeschrieben. Der
注意: The parser used for emulated prepared statements and for rewriting named or question mark style parameters supports the non standard backslash escapes for single- and double quotes. That means that terminating quotes immediately preceeded by a backslash are not recognized as such, which may result in wrong detection of parameters causing the prepared statement to fail when it is executed. A work-around is to not use emulated prepares for such SQL queries, and to avoid rewriting of parameters by using a parameter style which is natively supported by the driver.
-Parameter
statement
muss eine gültige SQL-Anweisungsvorlage für den Zieldatenbankserver sein. Das
driver_options
-Array enthält ein oder mehrere Schlüssel-Wert-Paare „key=>value“, um Eigenschaften für das zurückgegebene PDOStatement-Objekt festzulegen. Übliche Verwendung ist: Wenn Sie PDO::ATTR_CURSOR auf PDO::CURSOR_SCROLL setzen, erhalten Sie einen scrollbaren Cursor. Einige Treiber verfügen über Optionen auf Treiberebene, die während der Vorbereitung festgelegt werden.
Rückgabewert
Wenn der Datenbankserver die Vorbereitung der Anweisung abschließt, gibt PDO::prepare() das PDOStatement-Objekt zurück. Wenn der Datenbankserver die Anweisung nicht vorbereiten kann, gibt PDO::prepare() false zurück oder löst eine PDOException aus (abhängig vom Fehlerhandler).
Hinweis:
Die Prepare-Anweisung im Simulationsmodus interagiert nicht mit dem Datenbankserver, daher prüft PDO::prepare() die Anweisung nicht.
Beispiel
Beispiel #1 SQL-Anweisungsvorlage in benannter Parameterform
<?php /* 传入数组的值,并执行准备好的语句 */ $sql = 'SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour'; $sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); $sth->execute(array(':calories' => 150, ':colour' => 'red')); $red = $sth->fetchAll(); $sth->execute(array(':calories' => 175, ':colour' => 'yellow')); $yellow = $sth->fetchAll(); ?>
Beispiel #2 SQL-Anweisungsvorlage in Fragezeichenform
<?php /* 传入数组的值,并执行准备好的语句 */ $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?'); $sth->execute(array(150, 'red')); $red = $sth->fetchAll(); $sth->execute(array(175, 'yellow')); $yellow = $sth->fetchAll(); ?>
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Prerare in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!