我正在使用php和mysqli,我遇到了一个插入查询的问题,看起来像:
SET NAMES 'utf8'
$text = mysqli_real_escape_string($connection, $text)
insert into table values('', '".$text."');
页面是utf8编码没有BOM和mysql是utf8通用ci
问题是,当我使用phpmyadmin的请求工作正常,但当我使用网站界面和键入字符"+"的文本,它替换为mysql中的空格",但所有其他字符,如',",重音,',/,%都正确插入…在我可能犯错误之前它工作了。
提前谢谢你,很抱歉我的英语很差。
既不是mysql,也不是mysqli,更不是PHP。他们都没有给这个字符赋予任何特殊的含义。
如果您想要验证您的插入,只需在插入之前回显$text
out,您将看到它已经去掉了+号。所以,你必须找到去掉那个符号的代码。
程序不是一个"黑盒",你输入数据,它返回一些意想不到的输出。
而是一组操作符,每个操作符执行一些数据操作。
唯一可能自动替换+字符的情况是,如果你在浏览器的地址栏中输入你的文本。在这种情况下,+可以自动替换为空格,因为PHP会解码urlencoded文本,而+用于替换URL