PDO的好處

產生原因

  普通的SQL執行語句,由於研發人員對前端請求參數過濾不嚴謹,導致SQL被注入,從而影響數據庫,帶來風險

使用PDO後形成的語句

  SELECT * FROM test WHERE id in (?);

PDO執行操作主要兩個動作

  1. prepare():預處理SQL語句,通過將'?'佔位符發送到服務器解析SQL語句
  2. execute():執行解析出來的SQL語句獲得結果

PDO好處有兩個

  1. PDO將解析SQL與執行SQL分開,這樣避免了SQL注入攻擊。例如:字符串跟運算符(1 OR 1 = 1),發送到數據庫,傳統的數據庫操作會把它當成可運算字符拼接成SQL語句一起執行。如:SELECT * FROM test where id = 1 or 1 = 1。如果是使用PDO的方式,則會當成一個字符串參數替換佔位符?。如:SELECT * FROM test where id = "1 OR 1 = 1"。這樣子則不會出現注入
  2. 減少SQL執行步驟,加快SQL執行速度。查詢僅需解析(或預處理)一次,但可以用相同或不同的參數執行多次。當查詢準備好後,數據庫將分析、編譯和優化執行該查詢的計劃。對於複雜的查詢,此過程要花費較長的時間,如果需要以不同參數多次重複相同的查詢,那麼該過程將大大降低應用程序的速度。通過使用預處理語句,可以避免重複【分析/編譯/優化】週期。簡言之,預處理語句佔用更少的資源,因而運行得更快。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章