使用PDO安全地将值插入MySQL表

时间:2013-06-17 07:18:28

标签: mysql pdo insert code-injection

这会保护我的INSERT免受SQL注入吗?我可以以某种方式缩短这段代码,使它看起来更整洁吗?

$db = new PDO('mysql:host=XXXXXXXXXX;dbname=XXXXXXXXX', 'XXXXXXXXX', 'XXXXXXXXXX');

// query MySQL to verify login
$query = $db->prepare("INSERT INTO login (username,password,name,email_add,age,country) VALUES (:username,:password,:name,:email_add,:age,:country)");
$query->execute(array(
':username' => $username, 
':password' => $password,
':name' => $name,
':email_add' => $email,
':age' => $age,
':country' => $country));

1 个答案:

答案 0 :(得分:0)

是, PDO扩展程序已经删除了所有这样的注入漏洞。既然你在病房后绑定了params,你也正确地做到了。

但是,只是为了使查询处于最安全状态,请在绑定变量时指定变量的数据类型。

$query = $db->prepare('INSERT INTO login (username,password,name,email_add,age,country) VALUES (:username,:password,:name,:email_add,:age,:country)');

$query->bindParam(':username', $username, PDO::PARAM_STR, 20);
// and so on
$query -> execute();

More Details