Mysql避免SQL注入


mysql avoid sql injections

我有很多函数,比如

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);
  • 始终使用预处理语句

  • 不使用mysql驱动,使用mysqliPDO驱动

您应该使用参数化并让数据库驱动程序为您处理它,即使用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的代码

你可以使用

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

but prepared statements rocks

不存在,但您可以解析所有输入(例如: