Php 如何在pdo中转义字符串?
我想知道如何在pdo中转义字符串。 我一直像下面的代码一样逃离弹簧,但是现在有了pdo,我不知道怎么做Php 如何在pdo中转义字符串?,php,mysql,pdo,Php,Mysql,Pdo,我想知道如何在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=(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);
好吧,你可以使用,但是,正如在它自己的文档页上所说的
如果您使用此函数构建SQL语句,则
强烈建议用于准备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']) );
mysql.*
函数在PDO中不起作用。为什么?由于PDO不使用mysql连接到数据库,就输入清理而言,PDO使用准备好的语句。您可以在这里找到一个很好的教程:为什么要使用mysql\u real\u escape\u string
来连接会话值?不要使用去擦洗的mysql\u*函数。请改用PDO/MySQLi.@Mr.Alien-可能是因为会话包含文本,而不是SQL的预转义片段。在将文本插入数据格式或将作为代码计算的字符串之前,您应该始终对其进行转义。@Boynux-问题是如何做到这一点@昆汀:我猜他一定是在用正则表达式删除非用户名字符,比如$#@%^代码>等等,我确信他从数据库中获取数据并将其分配给用户名SessionCreat u,只要我问了什么谢谢一位我理解的伟人谢谢