2013-07-19 138 views

回答

1

逸出做正確準備的SQL語句。在MySQL中沒有相應的功能,因爲當它遇到該層時,它首先應該應該已經被轉義。

使用mysqli_real_escape_string也是一個標誌,你應該使用bind_param方法而不是這種超級低級別調用。

+1

'mysqli_real_escape_string'是**不是**'不正確地做某事'。準備好的語句是保護SQL的一種方法,但它們並非銀彈。準備好的語句在許多用途中具有性能開銷,並且不支持一些有用的語法變體。 'mysqli_real_eascape_string'是轉義SQL輸入的有效方法。重要的是確保你的SQL的安全。堅持準備好的陳述是唯一「正確」的方式就是懶惰的想法。 – 2013-07-19 15:43:11

+0

@Mike阿門!如果應用正確,'* _real_escape_string'工作得很好* – deceze

+1

我在這裏看到的糟糕的代碼示例的數量表明大多數人不明白如何正確使用任何'escape_string'函數,或者更重要的是,一致。佔位符的性能開銷是多少?它甚至可衡量嗎?如果是這樣,爲什麼PHP是習慣於調用低級別轉義函數的少數幾種語言之一?如果PDO有性能問題,那麼它應該被修復。鼓勵人們在沒有佔位符的情況下逃避自己的數據不會有幫助。 – tadman