9

我想知道如何在 pdo 中转义字符串。我一直在像下面的代码一样逃离弹簧,但现在使用 pdo 我不知道该怎么做

$username=(isset($_POST['username']))? trim($_POST['username']): '';
$previlage =(isset($_GET['previlage']));
$query ="SELECT * FROM site_user 
WHERE username = '".mysql_real_escape_string($_SESSION['username'])."' AND  previlage ='Admin'";
$security = mysql_query($query)or die (mysql_error($con));
$count = mysql_num_rows($security);
4

2 回答 2

23

好吧,您可以使用PDO::quote,但是,正如它自己的文档中所说...

如果您使用此函数构建 SQL 语句,强烈建议您使用PDO::prepare()来准备带有绑定参数的 SQL 语句,而不是使用 PDO::quote() 将用户输入插入到 SQL 语句中。

在您的情况下,它可能如下所示:

$query = "SELECT * 
            FROM site_user 
           WHERE username = :username AND previlage = 'Admin'";
$sth   = $dbh->prepare($query);
$sth->execute(array(':username' => $_SESSION['username']) );
于 2013-02-26T14:35:53.310 回答
3

mysql_*功能在 PDO 中不起作用。为什么?因为 PDO 不使用 mysql 连接到数据库,所以就输入清理而言,PDO 使用准备好的语句,你可以在这里找到一个很好的教程:pdo

于 2013-02-26T14:37:19.517 回答