PHP查询不插入字符"+"


mysqli php query doesnt insert character "+"

我正在使用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,您将看到它已经去掉了+号。所以,你必须找到去掉那个符号的代码。

程序不是一个"黑盒",你输入数据,它返回一些意想不到的输出。
而是一组操作符,每个操作符执行一些数据操作。

因此,您必须调试代码,这意味着您必须在代码的各个部分回显您的$text变量,以查看它被更改的地方。最有可能的是,它得到了一些不必要的治疗。找到代码后,你可以删除它,或者在这里询问它是否正确。

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

中的空格字符