Php 反向转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义

Php 反向转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义转义,php,mysql,mysql-escape-string,Php,Mysql,Mysql Escape String,我目前遇到了这个问题,我使用mysqlescapestring将数据插入到我的数据库中,在检索时,数据包含许多冗余/字符。有没有办法扭转这种局面 这是我的密码 $post_nameE = EscapeString($post_name); $post_descE = EscapeString($post_desc); $post_dateE = date("Y-m-d H:i:s"); $post_contentE = EscapeString($post_content

我目前遇到了这个问题,我使用mysqlescapestring将数据插入到我的数据库中,在检索时,数据包含许多冗余/字符。有没有办法扭转这种局面

这是我的密码

$post_nameE = EscapeString($post_name);
    $post_descE = EscapeString($post_desc);
    $post_dateE = date("Y-m-d H:i:s");
    $post_contentE = EscapeString($post_content);
    $statusE = EscapeString($status);
    $tagE = EscapeString($tag);

    $sql="INSERT INTO post (post_id, post_name, post_desc, post_date, post_content, status, tags)
    VALUES (DEFAULT, '$post_nameE', '$post_desc', '$post_dateE', '$post_contentE', '$statusE', '$tagE' )";
    $res = dbQuery($sql);

    if ($res)
        echo "1 record added";
    else
        die('Error: ' . mysqli_error($res));
已定义和转义字符串:

function EscapeString($s) {
    global $mysqli;
    return $mysqli->real_escape_string($s); 
}
其中包括:

'The ice bucket challenge'
从数据库检索并显示的内容:

\'The ice bucket challenge\'

我一直在阅读其他stackoverflow问题,其中大多数人声称这不应该发生,有解决办法吗?

我假设这些值来自$\u POST。在这种情况下,php.ini中有magic_quotes_gpc=true。这将转义通过POST、GET和COOKIE发送的数据。将此选项禁用为false,或在全局包含/头文件中执行以下操作:

$_POST = array_map('stripslashes', $_POST);
还有一个magic_quotes_运行时,它在从数据库检索时转义数据。这也应该关闭


如果您要使用prepared语句,您就不必担心手动转义,但是magic_quote指令仍然需要关闭。

请发布转义字符串的函数定义,因为这显然是一个用户定义的函数。我们需要看看那里具体发生了什么。此外,如果您使用的是较旧的PHP版本,@MichaelBerkowski question已更新。当数据输入数据库时,您通过real_escape_字符串添加的任何转义都将消失。如果你得到了额外的转义,那么有东西已经在为你转义你的文本了,你实际上是在双重转义。@Hanky웃Panky:stripslashes不是真正的逃逸字符串的反面。它与addslashes相反,addslashes对于sql转义完全没有用处。为什么要修复这个问题?你不应该一开始就把它修好。使用PDO驱动程序和准备好的语句。