2010-12-09 97 views
2

在PDO中使用準備好的語句時,是否應該爲每個數據庫調用「構建」一個準備好的語句,或者我可以爲所有調用使用一個語句嗎? 例如:使用PDO預處理語句的最佳方法是什麼?

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

OR

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

如果您打算多次發出相同的查詢,只有不同的參數綁定到佔位符,您應該嘗試以可重用該語句的方式構造代碼。調用prepare會導致數據庫創建並緩存查詢的執行計劃,您將在以後的調用中重用該執行計劃,以加快查詢速度。

+0

所以我想在一個數據庫類中調用一個通用的查詢方法是不成問題的。我應該在每個模型中定義每個準備好的聲明。現在又出現了第二個問題:在模型上定義這些模型會在模型的每個實例中重新聲明它們?如果是這樣的話,最好在db和model之間建立一箇中間層來定義這些語句每個只有一次?謝謝丹! – Juank 2010-12-09 00:44:23

相關問題