我正在使用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中的空格“”,但所有其他字符如“,”,重音符号,\ ,/,%正确插入... 在我可能犯了错误之前它已经奏效了。
先谢谢你,抱歉我的英语很差。
答案 0 :(得分:0)
它既不是mysql,也不是mysqli,不是PHP。 他们都没有在这个角色中赋予任何特殊意义。
如果您需要验证插入内容,只需在插入前回显$text
,您就会发现它已经被剥离了+符号。所以,你必须找到剥离该符号的代码。
程序不是一个“黑匣子”,你用数据提供它并返回一些意外的输出 而是运算符集,每个都执行一些数据操作。
因此,您必须调试您的代码,这意味着您必须在代码的各个部分中回显$ text变量,以查看它的更改位置。很可能它正在得到一些不必要的治疗。找到该代码后,您可以将其删除或在此处询问是否正常。
自动替换+字符的唯一可能情况是,如果您在浏览器的地址栏中键入文本。在这种情况下,+可以自动替换为空格,因为PHP解码了urlencoded文本而+用于替换URL中的空格字符