我有很多功能,比如
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 :(得分:3)
始终使用预备陈述
请勿使用mysql
驱动程序,使用mysqli
或PDO
答案 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的代码。
答案 2 :(得分:1)
你可以使用,
list($id,$music) = array_map('mysql_real_escape_string',array($id,$music))
但准备好的陈述
答案 3 :(得分:0)
没有,但是您可以在脚本开始时解析所有输入(例如GET和POST)