PHP PDO vorbereitete Anweisungen

Lesezeit: 2 Minuten

PHP PDO vorbereitete Anweisungen
Hanpan

Mir wurde heute gesagt, dass ich in meiner Anwendung wirklich PDO und vorbereitete Anweisungen verwenden sollte. Obwohl ich die Vorteile verstehe, habe ich Schwierigkeiten zu verstehen, wie ich sie in meinen Arbeitsablauf implementiere. Abgesehen von der Tatsache, dass es den Code viel sauberer macht, sollte ich eine bestimmte Datenbankklasse haben, die alle meine vorbereiteten Anweisungen enthält, oder sollte ich jedes Mal eine erstellen, wenn ich eine Abfrage ausführen möchte? Ich finde es sehr schwer zu verstehen, wann ich eine Standard-PDO-Abfrage und wann eine vorbereitete Anweisung verwenden sollte. Alle Beispiele, Tipps oder Tutorial-Links würden sehr geschätzt.

PHP PDO vorbereitete Anweisungen
Ólafur Waage

Es gibt zwei großartige Beispiele für die pdo::prepare() Dokumentation.

Ich habe sie hier eingefügt und etwas vereinfacht.

Dieser verwendet ? Parameter. $dbh ist im Grunde ein PDO-Objekt. Und was Sie tun, ist die Werte zu setzen 150 und 'red' jeweils in das erste und zweite Fragezeichen.

/* Execute a prepared statement by passing an array of values */
$sth = $dbh->prepare('SELECT name, colour, calories
                      FROM fruit
                      WHERE calories < ? AND colour = ?');

$sth->execute(array(150, 'red'));

$red = $sth->fetchAll();

Dieser verwendet benannte Parameter und ist etwas komplexer.

/* Execute a prepared statement by passing an array of values */
$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();

  • Ist in Ihren 2 Beispielen 1 besser als das andere?

    – Jason Davis

    21. September 2009 um 22:11 Uhr

  • Für einfache Abfragen wird das ? ist gut. Beachten Sie jedoch, dass vorbereitete Anweisungen jedem Wert ein Anführungszeichen hinzufügen. Wobei im 2. Beispiel angegeben werden kann, dass ein Wert eine Zahl und der andere Wert eine Zeichenfolge ist. (obwohl es hier nicht gezeigt wird)

    – Ólafur Waage

    21. September 2009 um 22:12 Uhr

  • Kommt nur darauf an, was Sie damit machen wollen … Wenn Sie denselben Wert mehr als einmal verwenden möchten, sollten Sie benannte Parameter verwenden. Dies liegt daran, dass bei Verwendung von ? diese einfach in der Reihenfolge eingefügt werden, in der sie erscheinen. Wenn Sie die benannten Parameter verwendet haben, können Sie sie mehr als einmal verwenden. Die ? sind nur eine komprimiertere Version für einfachere Abfragen. Ansonsten hat man keinen Vorteil gegenüber dem anderen.

    – BraedenP

    21. September 2009 um 22:19 Uhr

  • Verzeihen Sie meine Unwissenheit, aber wo sollte ich die vorbereitete Anweisung verwenden? Sollte ich es in einer Art Datenbankschicht deklarieren oder ist es in Ordnung, es wie in den obigen Beispielen inline zu verwenden?

    – Hanpan

    22. September 2009 um 7:38 Uhr

  • Verwenden Sie es, während es funktioniert, wenn Sie später einen besseren Weg finden, dann tun Sie das 🙂

    – Ólafur Waage

    22. September 2009 um 13:49 Uhr

986530cookie-checkPHP PDO vorbereitete Anweisungen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy