Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich vorbereitete Anweisungen in CodeIgniter verwenden

CodeIgniter unterstützt keine vorbereiteten Anweisungen. Wenn Sie sich den Quellcode für die Database-Klasse von CI ansehen, werden Sie sehen, dass sie Bindungen auflösen, indem sie einfach die Fragezeichen durch die Daten aus dem übergebenen Array ersetzen:

Sie unterstützen nur Query Binding mit unbenannten Platzhaltern. Siehe http://ellislab.com/codeigniter/user-guide/database/ abfragen.html

Abfragebindungen

Mit Bindungen können Sie Ihre Abfragesyntax vereinfachen, indem Sie das System die Abfragen für Sie zusammenstellen lassen. Betrachten Sie das folgende Beispiel:

$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));

Die Fragezeichen in der Abfrage werden automatisch durch die Werte im Array im zweiten Parameter der Abfragefunktion ersetzt.

und http://ellislab.com/forums/viewthread/105112/#528915

Obwohl CI keine vorbereiteten Anweisungen unterstützt, unterstützt es Abfragebindungen. Bei vorbereiteten Anweisungen müssen Sie eine Art von Prepare()-Funktion und dann eine Art von Execute()-Funktion aufrufen. Bei Abfragebindungen müssen Sie nur eine Funktion aufrufen, die im Grunde dasselbe tut. Aus diesem Grund mag ich Abfragebindungen lieber als vorbereitete Anweisungen.

Nebenbei bemerkt, ? ändern zu :foo ändert lediglich von unbenannten zu benannten Bindungen (die CI anscheinend auch nicht unterstützt). Nur weil Sie entweder oder verwenden, heißt das nicht, dass Sie die Anweisungen vorbereiten.