我不是 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 多次应用于同一个字符串,导致许多 \\ 到同一个可转义字符?
非常感谢您的投入!