这会保护我的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));
答案 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();