2011-02-17 71 views
1

我使用PHP開發Web應用程序並使用MySQL作爲數據庫。我想了解準備好的陳述的用法,並且只是採取我的第一步。使用PREPARE命令(SQL)與PDO或mysqli函數

據我所知,準備語句主要到:

  1. 增加查詢的效率(預解析,緩存執行計劃,客戶端和服務器之間的二進制數據傳送)

  2. 確保防止代碼注入攻擊(不完全清楚這一點,但我認爲我有一個基本的瞭解)

(可能還有其他r,使用爲好)

的問題是,

爲什麼不使用MySQL提供的PREPARE語句,讓手在你準備語句,然後使用這些在你的PHP應用程序,無論是PDO或mysqli的?更好的是,使用這些準備好的語句來製作存儲過程,並只將這些語句暴露給PHP程序員?

通過這種方式,數據庫程序員可以分離/處理進行正確查詢的實際負擔。 PHP程序員可以完全只關注應用程序的實現和優化。

我不會預見我將很快使用的數據庫中的任何更改。 MySQL滿足所有要求。但爲了保持我的應用程序清潔和數據庫不可知,我可以使用PDO。或堅持程序編碼,並做mysqli

這是一個有效/經過試驗和測試的方法去建設一個應用程序?

謝謝

+0

哈哈,你問題中幾乎所有的假設都是假的:) 1.如你所見,效率比真實更能想象。 2.至於安全性,這只是逃避的另一種方式,並非真正的巨大差異。 Mysqli也有面向對象的接口,PDO不會讓你輕鬆地交換數據庫引擎。 – 2011-02-17 14:01:46

回答

1

PREPARE語句的結果有點特殊,不能退還給用戶。你可以通過在MySQL中存儲一個變量來使用它。但是,這不是標準。 MySQL爲您提供API,以便PDO驅動程序利用它們,您可以編寫DB不可知的代碼。我完全沒有理由不這樣做。在使用PDO的許多事情中,我特別喜歡DBTNG(Drupal 7 DB層被剝離),因爲我有一部分在寫它:)和idiorm

相關問題