2011-02-16 48 views
2

我開始在我的應用程序中使用PDO並準備好語句,但我有一些問題給那裏的專業人員。希望你能幫我! :)關於PDO和準備報表的幾個問題

  1. 什麼時候應該使用預處理語句?我整個應用程序中的每個查詢?
  2. 我可以使用INSERT的準備好的語句嗎?
  3. 我可以在INSERT中使用帶有可變列的預準備語句嗎?
  4. 準備語句多快(使用SELECT或INSERT時)
  5. 我可以使用UPDATE語句嗎?
  6. 爲什麼我應該使用它們,除了速度提升和安全性?

回答

7

什麼時候應該使用預處理語句?我整個應用程序中的每個查詢?

是的。隨處使用它們。有幾個邊緣情況下,您仍然需要連接SQL和值轉義。綁定參數不能替代動態SQL構造。

我可以使用INSERT的準備語句嗎?

是的。 INSERT INTO tbl (x,y,z) VALUES (?,?,?)

我可以在INSERT中使用具有可變列的準備語句嗎?

是的。但是列名不能被綁定參數。構造動態INSERT語句需要過濾器和/或轉義函數。

有多快準備語句(SELECT使用INSERT或時)

沒有一般的答案。

如果您遍歷數據數組並重新使用準備好的語句來插入,則會發生速度增益。普通查詢:取決於。測試自己。

我可以在UPDATE中使用預處理語句嗎?

是的。 UPDATE tbl SET x = ? AND y = ? WHERE z = ?

爲什麼我應該使用它們,除了速度提升和安全性?

使SQL查詢更具可讀性。

+0

+1提及列名稱和過濾(但是,我寧願白名單逃避)。 – 2011-02-18 08:00:47

2

什麼時候應該使用預處理語句?我整個應用程序中的每個查詢?

當然,是的,否則將是徒勞無益的。

我可以使用INSERT的準備語句嗎?

您如何看待?如果你不能這樣做會有意義嗎? 「我們爲你製造了極好的盔甲,但它只保護一方」?

我可以在INSERT中使用帶有可變列的準備好的語句嗎?

您可以添加可變數量的佔位符!

有多快準備語句(SELECT使用INSERT或時)

你永遠不會注意到。

我可以在UPDATE中使用預處理語句嗎?

沒有評論。

爲什麼我應該使用它們,除了速度提升和安全性?

嗯,原因與魔術引號完全一樣 - 它可以爲那些沒有線索的人提供更安全的應用。就這樣。