mysqli php查询不插入字符“+”

时间:2013-05-01 02:02:18

标签: php character-encoding mysqli

我正在使用php和mysqli,我遇到了一个插入查询的问题,如下所示:

    SET NAMES 'utf8'
    $text = mysqli_real_escape_string($connection, $text)
    insert into table values('', '".$text."');

页面编码为utf8,没有BOM,mysql是utf8 general ci

问题是,当我使用phpmyadmin时,请求工作正常,但是当我使用网站界面并键入带有字符“+”的文本时,它将替换为mysql中的空格“”,但所有其他字符如“,”,重音符号,\ ,/,%正确插入... 在我可能犯了错误之前它已经奏效了。

先谢谢你,抱歉我的英语很差。

1 个答案:

答案 0 :(得分:0)

它既不是mysql,也不是mysqli,不是PHP。 他们都没有在这个角色中赋予任何特殊意义。

如果您需要验证插入内容,只需在插入前回显$text,您就会发现它已经被剥离了+符号。所以,你必须找到剥离该符号的代码。

程序不是一个“黑匣子”,你用数据提供它并返回一些意外的输出 而是运算符集,每个都执行一些数据操作。

因此,您必须调试您的代码,这意味着您必须在代码的各个部分中回显$ text变量,以查看它的更改位置。很可能它正在得到一些不必要的治疗。找到该代码后,您可以将其删除或在此处询问是否正常。

自动替换+字符的唯一可能情况是,如果您在浏览器的地址栏中键入文本。在这种情况下,+可以自动替换为空格,因为PHP解码了urlencoded文本而+用于替换URL中的空格字符