这种PDO和MySQL的实现是否可以抵御MySQL注入?

时间:2015-10-23 17:34:56

标签: php mysql pdo

我一直在研究PDO风格的PHP扩展,以安全的方式进行MySQL查询。我想知道我是否已经正确地做到了这一点,我可以相信它可以安全地防止MySQL注入等等?任何确认或更正都将非常感谢!

<?php
$nametosearch=$_POST['nametosearch'];// Is "Billy"

$db = new PDO('mysql:host='.HOST.'; dbname='.DBNAME, DBUSER, DBPASSWORD);//the all caps are PHP constants.

$query =  "SELECT * FROM ".DBNAME.".sometable WHERE username=".$db->quote($nametosearch)." ORDER BY lastname ASC;";

$result = $db->query($query);

while($row = $result->fetch(PDO::FETCH_ASSOC)) {
                    //Do some stuff with results
                }

$result->closeCursor();
$db = null;
?>

1 个答案:

答案 0 :(得分:0)

这对你构建查询的方式不太好,你应该使用预准备语句来保证安全:

<?php
$nametosearch=$_POST['nametosearch'];// Is "Billy"

$db = new PDO('mysql:host='.HOST.'; dbname='.DBNAME, DBUSER, DBPASSWORD);//the all caps are PHP constants.

$statement = $db->prepare("SELECT * FROM ".DBNAME.".sometable WHERE username=":username" ORDER BY lastname ASC;");

$statement->execute(array(':username', $nametosearch));

//....
?>

这是使用PDO进行数据库查询的安全方法。