我有很多函数,比如
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
驱动,使用mysqli
或PDO
驱动
您应该使用参数化并让数据库驱动程序为您处理它,即使用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
不存在,但您可以解析所有输入(例如: