我不是 PHP/SQL 专家,我刚刚发现我必须应用 mysql_real_escape_string 来保护我的 SQL INSERTS。
我使用网上找到的几个建议做了一个函数,这里是:
function secure($string)
{
if(is_numeric($string)) 
    { $string = intval($string); }
    elseif (is_array($string)) 
    {
        foreach ($string as $key => $value) {
            $string[$key] = secure($value);
        }
    } 
    else if ($string === null) 
    {
        $string = 'NULL';
    }
    elseif (is_bool($string)) 
    {
        $string = $string ? 1 : 0;
    } 
    else 
    {
        if (get_magic_quotes_gpc()) { $value = stripslashes($string); } 
        $string = mysql_real_escape_string($string);
        $string = addcslashes($string, '%_');
    }
    return $string;
}
事情是,当我查看我的表格内容时,它包含反斜杠。然后从逻辑上讲,当我检索数据时,我必须对其应用带斜杠以删除这些反斜杠。
魔术行情已关闭。
问题 1) 现在我认为即使我在插入 SQL 之前使用 mysql_real_escape_string 来保护我的数据,反斜杠也不应该出现在我的内容中?你能证实这一点吗?
问题 2) 如果不正常,为什么这些反斜杠出现在我的 phpMyAdmin 内容和检索中?我做错了什么?
问题 3) 我的猜测是 mysql_real_escape_string可以应用两次,不是吗?如果是这样,有什么功能可以防止 mysql_real_escape_string 多次应用于同一个字符串,导致许多 \\ 到同一个可转义字符?
非常感谢您的投入!