MySQL真正的转义字符串

时间:2011-01-06 23:45:09

标签: php mysql sanitization mysql-real-escape-string apostrophe

我试图使用addslashes和mysql_real_escape_string来清理我的PHP登录信息。使用addslashes有效,但mysql_real_escape_string不会。

以下是允许我正确登录的示例:

$user = addslashes($_POST['user']);<br/>
$password = addslashes($_POST['password']);

这不会:

$user = mysql_real_escape_string($_POST['user']);<br/>
$password = mysql_real_escape_string($_POST['password']);

另外,我的其他一些字段包含撇号。使用addslashes时不返回任何内容,因为数据库中的条目不会被转义。我想知道是否使用mysql_real_escape_string可以解决这个问题,但我不知道如何解决。

3 个答案:

答案 0 :(得分:12)

始终使用mysql_real_escape_string而不是addslashes。确保在>运行之前已连接到数据库,否则您将出错。

答案 1 :(得分:1)

mysql_real_escape_string()不会转义%和_。如果与LIKE,GRANT或REVOKE结合使用,这些是MySQL中的通配符。

最重要的是不要信任用户输入。

因此,使用htmlspecialchars和strip_tags可以提高安全性。

答案 2 :(得分:1)

有时用户可能会输入',这个符号但是sql以不同的方式处理并且不允许插入表中,我们不能限制用户以便我们使用MySQL真正的转义字符串来避免这种情况错误

注意:如果你实现它,它应该连接到数据库,否则它将无法正常工作