【发布时间】:2013-02-12 01:24:11
【问题描述】:
我想知道如何在 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);
【问题讨论】:
-
你为什么使用
mysql_real_escape_string作为会话值? -
不要使用贬低的 mysql_* 函数。改用 PDO/MySQLi。
-
@Mr.Alien — 大概是因为会话包含文本而不是预先转义的 SQL 片段。在将文本插入数据格式或将被评估为代码的字符串之前,您应该始终对其进行转义。
-
@Boynux — 问题是问如何做到这一点!
-
@Quentin 我猜他一定是在使用正则表达式来删除非用户名字符,如
$#@%^!等,并且确信他从数据库中获取数据并将其分配给用户名会话