PDO::prepare
PDO::prepare
(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)
PDO::prepare — Prepares a statement for execution and returns a statement object
Beskrivning
public PDO::prepare(string $query, array $options = []): PDOStatement|false
Förbereder ett SQL-uttryck för att exekveras med PDOStatement::execute. Mallen kan innehålla namngivna (:name) eller frågetecken (?) som parametermarkörer. Använd dessa markörer för att binda användarinmatning – inkludera aldrig användarinmatning direkt i frågan.
Noteringar:
- Parametermarkörer kan representera en fullständig data literal, men inte en del av en literal, nyckelord eller identifierare.
- Du kan inte blanda namngivna och frågetecken som parametermarkörer i samma mall.
- PDO::prepare och PDOStatement::execute optimerar applikationens prestanda och förhindrar SQL-injektion.
Parametrar
- query
- Ett giltigt SQL-uttryck för måldatabasservern.
- options
- En array med nyckel=>värde-par för att ställa in attributvärden för det PDOStatement-objekt som metoden returnerar. Vanligtvis används detta för att sätta värdet på `PDO::ATTR_CURSOR` till `PDO::CURSOR_SCROLL` för att begära en rullningsbar markör.
Returvärden
Returnerar ett PDOStatement-objekt vid framgång. Vid misslyckande returneras `false` eller PDOException kastas (beroende på felfunktion).
Fel/Undantag
- Genererar ett fel med nivån `E_WARNING` om attributet `PDO::ATTR_ERRMODE` är inställt på `PDO::ERRMODE_WARNING`.
- Kastar en `PDOException` om attributet `PDO::ATTR_ERRMODE` är inställt på `PDO::ERRMODE_EXCEPTION`.
Exempel
Exempel #1 SQL-mall med namngivna parametrar
<?php $sql = 'SELECT name, colour, calories FROM fruit WHERE calories < :calories AND colour = :colour'; $sth = $dbh->prepare($sql, [PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY]); $sth->execute(['calories' => 150, 'colour' => 'red']); $red = $sth->fetchAll(); $sth->execute([':calories' => 175, ':colour' => 'yellow']); $yellow = $sth->fetchAll(); ?>
Exempel #2 SQL-mall med frågetecken som parametermarkörer
<?php $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?'); $sth->execute([150, 'red']); $red = $sth->fetchAll(); $sth->execute([175, 'yellow']); $yellow = $sth->fetchAll(); ?>
Exempel #3 SQL-mall med undantagna frågetecken
<?php /* Endast giltigt på PostgreSQL */ $sth = $dbh->prepare('SELECT * FROM issues WHERE tag::jsonb ?? ?'); $sth->execute(['feature']); $featureIssues = $sth->fetchAll(); $sth->execute(['performance']); $performanceIssues = $sth->fetchAll(); ?>
Se även
- PDO::exec - Exekverar ett SQL-uttryck och returnerar antalet påverkade rader
- PDO::query - Förbereder och exekverar ett SQL-uttryck utan platshållare
- PDOStatement::execute - Exekverar ett förberett uttalande
Sidslut
Orginalhemsidan på Engelska :https://www.php.net/manual/en/pdo.prepare.php
PHP
Funktioner
Funktionsreferens
Databas-tillägg
Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på
https://www.linux.se/kontaka-linux-se/
Tack till Huddinge Datorhjälp som har sponsrat Linux.se med webbhotell.