额外///从数据库中提取信息时

时间:2011-03-02 11:45:57

标签: php

我正在使用funstion将数据插入数据库

所以这里是插入

的地方

我正在插入此

<div class="widget" id="recentcomments"><h2>Blog</h2></div>

update_option("head-text", mysql_real_escape_string($head_text));

所以它插入到数据库中,当我保存并将其拉回时如下所示。

<input type="text" name="head-text" id="head-text" class="regular-text" value="<?php echo htmlentities($head_text, ENT_QUOTES); ?>"/>

我得到以下内容。

<div class=\\\"widget\\\" id=\\\"recentcomments\\\"><h2>Blog</h2></div>

加载\\\\

抱歉之前的阴道问题。

3 个答案:

答案 0 :(得分:1)

根据手册mysql_real_escape_string

  

首先启用magic_quotes_gpc   将stripslashes()应用于数据。   在具有的数据上使用此功能   已经被逃脱将逃脱   数据两次。

您可以使用这样的函数(如果您不想使用预准备语句)

function safe($input)
{
    if (get_magic_quotes_gpc())
    {
        $input   = stripslashes($input);
        $escaped = mysql_real_escape_string($input);
    }
    else 
    {
        $escaped = mysql_real_escape_string($input);
    }

    return $escaped;
}

如果SQL转义正确完成,则无需在输出上调用stripslashes()

答案 1 :(得分:0)

在将数据插入数据库之前,您已将数据转发两次

你必须找到导致这种情况的原因,并关闭过多的逃逸。

可能是magic_quotes_gpc设置 在这种情况下,您必须在PHP配置中关闭此设置 并添加一个代码,用于检查get_magic_quotes_gpc()结果并从所有超全局数组中删除斜杠。

如果魔术引用肯定打开,
也可能只是在代码中调用两次mysql_real_escape_string / addslashes。你必须搜索你的代码并摆脱一个早于另一个

调用的代码

答案 2 :(得分:-1)

感谢您的回复让它与以下内容合作。

<?php echo htmlentities(stripslashes($head_text)); ?>

需要他们两个