2011-08-18 61 views
1

我有一個像PHP - MySQL的避免SQL注入

updateUser($id,$username,$email) 
updateMusic($id, $music) 

等諸多功能......

是否有一個通用的功能,避免SQL注入?

我只是想避免使用mysql_real_escape_string每個參數我有

$username = mysql_real_escape_string($username); 
$email= mysql_real_escape_string($email); 
$music= mysql_real_escape_string($music); 
+0

你可以只把它們放在你的函數,而不必每次都將它們傳遞到PARAMS。 – Prisoner

+0

是的,有一個通用的函數 - mysql_real_escape_string() – symcbean

回答

1

您可以使用,

list($id,$music) = array_map('mysql_real_escape_string',array($id,$music)) 

但準備好的發言岩石

0

沒有沒有,但你可以在腳本的beggining解析所有的投入(如GET和POST)

+1

「解析」太模糊不實用IMO。 –

3
  • 始終使用準備好的語句

  • 不要使用mysql驅動程序,使用mysqliPDO

+0

+1:這真的是唯一的方法。 –

2

您應該使用的參數,讓數據庫驅動程序與PDO爲您處理,即:

$dbh = new PDO('mysql:dbname=testdb;host=127.0.0.1', $user, $password); 
$stmt = $dbh->prepare('INSERT INTO REGISTRY (name, value) VALUES (:name, :value)'); 
$stmt->bindParam(':name', $name); 
$stmt->bindParam(':value', $value); 

// insert one row 
$name = 'one'; 
$value = 1; 
$stmt->execute(); 

代碼從Bobby-Tables