2011-02-05 41 views
0

任何人都可以用簡單的英文解釋我參數化的查詢是什麼,以及如何在PHP中爲MySQL數據庫實現它以避免SQL注入?什麼是用簡單英語解釋的參數化查詢?

+1

[這個問題,這是疑似重複](http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php)的答案是不解釋什麼是參數化查詢。 – Gumbo 2011-02-05 10:57:44

回答

1

PHP手冊的prepared statements and stored procedures部分,而它具體涉及到PDO,佔地面積這口井時,它說:

它們可以被看作是一種 編譯模板的SQL,一個 應用程序想要運行,可以使用可變參數自定義 。 預處理語句可以帶來兩大好處 :

  • 查詢只需要被解析(或準備 )一次,但可以用相同或 不同的參數執行 多次。當準備查詢 時,數據庫將 分析,編譯並優化它的 執行查詢的計劃。對於 複雜查詢,此過程可能需要花費 足夠長的時間,以便明顯地減少應用程序,如果有 需要重複使用不同參數的許多 次相同的查詢。通過 使用準備好的語句, 應用程序避免了重複分析/編譯/優化循環。這個 意味着準備好的語句使用更少的資源,因此運行速度更快。

  • 準備報表 的參數不需要引用;驅動程序 會自動處理此問題。如果 應用程序獨佔地使用預處理 語句,開發人員可以肯定 沒有SQL注入會發生 (但是,如果 查詢的其他部分正在興建了 轉義輸入,SQL注入是 仍有可能)。

如果你後如何使用它們的具體的例子,上面鏈接頁面還包括代碼示例。

相關問題