2010-12-09 16 views
2

При использовании подготовленных операторов в PDO следует «создать» подготовленный оператор для каждого вызова db или использовать один оператор для всех вызовов? пример:Каков наилучший способ использования подготовленных отчетов PDO?

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

ИЛИ

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

Существуют ли последствия памяти/скорость использования одного метода над другим? спасибо!

+0

Чтобы отобразить код в виде кодовых блоков, вам необходимо отложить их на четыре пробела (выделить их и нажать Ctrl + K). – BoltClock 2010-12-09 00:19:53

ответ

1

Если вы когда-либо собираетесь выпускать один и тот же запрос более одного раза, имея только разные параметры, привязанные к заполнителям, вы должны попытаться структурировать свой код таким образом, чтобы вы могли повторно использовать оператор. Вызов подготовки заставляет базу данных создавать и кэшировать план выполнения запроса, который вы будете повторно использовать в будущих вызовах для выполнения, делая эти запросы быстрее.

+0

Так что, я думаю, что сделать вызов из общего метода запросов в классе DB не может быть и речи. Я должен определить каждый подготовленный оператор в каждой модели. Теперь возникает второй вопрос: определение их на модели будет обновлять их с каждым экземпляром этой модели? если это так, было бы лучше построить промежуточный уровень между db и моделью, чтобы определять эти утверждения только по 1 раз в каждом? Спасибо, Дэн! – Juank 2010-12-09 00:44:23

Смежные вопросы