mysql_real_escape_string删除& -char

时间:2012-03-24 17:58:41

标签: php mysql-real-escape-string

我有一个链接:http://www.adress.com/Article.aspx?ID=262839&R=R1

在其上使用mysql_real_escape_string后,它将更改为http://www.adress.com/Article.aspx?ID=262839

因此它删除了& -char:“& R = R1”中的所有内容。

为什么呢?我该如何解决这个问题?

---编辑 谢谢你的回答。我将介绍PDO。

当然你是对的,问题不是由mysql_real_escape_string引起的。我的jquery ajax请求中的数据丢失了。

$('.share').live('click', function(event) {
        var thesharelink = $(this);
        var thehref = $(this).attr('href');
        $(this).hide();
        $.ajax({
            url: 'edit.php',
            type: 'POST',
            data: 'thehref=' + thehref,
            error: function(){
                $(thesharelink).replaceWith("Could not share");
            },
            contentType: 'application/x-www-form-urlencoded;charset=UTF-8',
            success: function(result1) {
                $('body').append(result1);
                $(thesharelink).replaceWith(msg);
            }
        });
});

因此,一旦数据到达php文件,它就会丢失。似乎添加转义修复了问题。虽然我欢迎任何改进建议。

2 个答案:

答案 0 :(得分:1)

我建议您切换到PDO,并使用准备好的语句。示例用法(借鉴PHP PDO prepared statements):

/* Execute a prepared statement by passing an array of values */
$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');

$sth->execute(array(150, 'red'));

$red = $sth->fetchAll();

答案 1 :(得分:0)

  

所以它删除了&amp; -char

中的所有内容

不是。

  

我该如何解决这个问题?

找到&amp;的真实原因角色去除。