2010-12-09 14 views
2

Bei Verwendung vorbereiteter Anweisungen in PDO sollte ich eine vorbereitete Anweisung für jeden DB-Aufruf "erstellen" oder kann ich eine Anweisung für alle Aufrufe verwenden? Beispiel:Wie können PDO-Anweisungen am besten verwendet werden?

class DB{ 
    ... 
    function query($sqlStatementString,$data){ 
     $this->sth->prepare($sqlStatementString); 
     $this->sth->execute($data); 
    } 
    ... 
} 

ODER

class User{ 
    ... 
    function doSomething(){ 
     $sthForDoSomething->prepare(...); 
     $sthForDoSomething->execute(...); 
    } 
    ... 
    function jump(){ 
     $sthForJump->prepare(...); 
     $sthForJump->execute(...); 
    } 
} 

Gibt es Speicher/Geschwindigkeit Auswirkungen ein Verfahren über die andere verwenden? danke!

+0

Um Ihren Code als Codebausteine ​​anzuzeigen, müssen Sie sie um vier Leerzeichen einrücken (markieren Sie sie und drücken Sie Strg + K). – BoltClock

Antwort

1

Wenn Sie jemals dieselbe Abfrage mehr als einmal mit nur an die Platzhalter gebundenen Parametern ausgeben, sollten Sie versuchen, Ihren Code so zu strukturieren, dass Sie die Anweisung wiederverwenden können. Beim Aufruf von prepare wird von der Datenbank ein Ausführungsplan für die Abfrage erstellt und zwischengespeichert, den Sie später bei der Ausführung von Anrufen wiederverwenden. Dadurch werden diese Abfragen schneller.

+0

Also denke ich, dass der Aufruf von einer generischen Abfrage-Methode in einer DB-Klasse nicht in Frage kommt. Ich sollte jede vorbereitete Aussage in jedem Modell definieren. Nun stellt sich eine zweite Frage: Definiert man diese am Modell, würde man sie mit jeder Instanz dieses Modells neu definieren? Wenn ja, wäre es besser, eine Zwischenschicht zwischen der Datenbank und dem Modell zu erstellen, um diese Anweisungen jeweils nur einmal zu definieren? Danke Dan! – Juank

+1

Sie werden wahrscheinlich über Bord gehen, wenn Sie diese Zeit in Ihrer App verbringen sollten, anstatt eine weitere Schicht der DB-Abstraktion zu erstellen. Die Vorteile der Wiederverwendung von Ausführungsplänen sind * normalerweise * ziemlich gering - tun Sie es, wenn Sie wissen, dass es zählt, oder wenn es einfach ist. Die Wiederverwendung von Anweisungen für Modellmethoden ist einfach. Wenn eine Methode eine Reihe von Dingen durchläuft und dieselbe Abfrage mit verschiedenen Daten ausführt, ist das eine gute Wiederverwendung der vorbereiteten Anweisung. Viele Instanzen einer Modellklasse zu verwenden, eine vorbereitete Anweisung wiederzuverwenden, ist schwierig und wahrscheinlich nicht die Zeit wert. –

+0

Kluge Vorschlag, danke Dan! – Juank

Verwandte Themen