2013-10-28 11 views
-4

我有一個網站,該網站上的所有MySQL查詢像這樣使用了自定義功能和addslashes:手動功能,防止MySQL的注射沒有準備好的發言

function custom_addslashes($str) { 
    return mysql_real_escape_string($str); 
} 

最近我發現了mysql_real_escape_string已被棄用。 我有兩個選擇。無論是

  1. 經過整個網站並轉換爲準備好的發言的每一頁,(哎呀)或

  2. 修改上面的功能。我認爲不可能修改上述函數來使用PDO,因爲它用於許多不同的查詢。

有沒有一種很好的方法來做選項2. 有點像?

function custom_addslashes($str) { 
    return strtr($str, array("\0" => "", "\\" => "\","'","\\'")); 
} 

clarifed問題

+0

可能的重複[如何防止SQL注入PHP?](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+2

爲什麼自定義函數當你完美的工作布爾功能。? –

+0

您應該可以使用PDO/MYSQLi查看準備好的語句。 –

回答

2

是足以讓所有的場景?

NO。

如果不是,應該加什麼?

準備好的聲明

我不想使用PDO /庫MySQLi。太複雜。和mysql_real_escape_string已被棄用。

我從未在我的生活中會期待這樣的結論。

+0

所以你說有沒有辦法做到這一點與一個簡單的功能 –

+1

是的。然而,它可以通過其他支持準備語句的簡單函數來完成 –

+0

我澄清了我在問題中這樣做的原因。 thnx –