如何检索"escape "来自db的字符串


How do I retrieve "escaped" strings from db?

我在插入所有字符串之前都这样做:

mysql_real_escape_string($_POST['position']);

我如何删除:'检索后?

所以我不会以:'" pizza '"结尾

这是否足够安全,或者我应该做其他事情?

谢谢

我建议你直接调用$_POST['position'](不要在上面调用mysql_real_escape_string)来获得非转义版本。

顺便说一下,你对安全的评论表明理解事物有点麻烦。

处理字符串的一种方法是处理转义版本,这导致了一种困难,而另一种方法是在嵌入之前处理另一种转义版本,这导致了另一种困难。我更喜欢后者。

使用stripslashes()去掉转义字符

逃避是伟大的。如果值将是整数,我建议您这样做:

$value = (int) $_POST['some_int_field'];

这可能是因为魔术引号是启用的,所以要使它通用,使用以下命令:

if (get_magic_quotes_gpc()) { // Check if magic quotes are enabled
        $position = stripslashes($_POST['position']);
    } else {
        $position = mysql_real_escape_string($_POST['position']);
}

mysql_real_escape_string()确实在SQL字符串中添加了's,但它们不应该进入数据库,因为它们仅用于字符串解析。

如果你在数据库中看到's,那么在你调用mysql_real_escape_string()之前,其他东西正在转义你的字符串。检查并确保magic_quotes_gpc没有打开