1

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

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

页面编码为 utf8 无 BOM,mysql 为 utf8 通用 ci

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

提前感谢您,并为我糟糕的英语感到抱歉。

4

1 回答 1

0

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

如果您想验证您的插入,只需$text在插入前回显,您会看到它已经被删除了 + 符号。因此,您必须找到去除该符号的代码。

程序不是您提供数据的“黑匣子”,它会返回一些意外的输出。
而是一组操作符,每个操作符都执行一些数据操作。

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

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

于 2013-05-01T04:38:25.617 回答