php - mysql避免sql注入

时间:2011-08-18 08:35:34

标签: php mysql

我有很多功能,比如

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);

4 个答案:

答案 0 :(得分:3)

  • 始终使用预备陈述

  • 请勿使用mysql驱动程序,使用mysqliPDO

答案 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)