2013-05-01 25 views
1

我使用PHP和库MySQLi和我会见一个INSERT查询它看起来像一个问题:mysqli的PHP查询犯规插入字符“+”

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

网页编码UTF8无BOM和MySQL是UTF8一般ci

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

非常感谢您提前致歉,并为我可怜的英语感到抱歉。

+1

您是否尝试使用预处理语句绑定参数? – Kermit 2013-05-01 02:04:34

+0

你好我不擅长准备查询,我知道我将不得不使用它们,但我不明白这里的问题,它让我疯狂:) – toolook 2013-05-01 02:08:09

+0

所以!我已经尝试了准备好的查询,并且我添加的文本仍然没有“+”...哦绝望... – toolook 2013-05-01 02:55:00

回答

0

这既不是MySQL的,不是mysqli的,而不是PHP。 没有一个人在这个角色中有任何特殊的含义。

如果你关心,以验证您的插入,通过简单地附和$text出插之前,你会看到,它已经剥离+符号。所以,你必须找到将该符号去掉的代码。

的程序是不是一个“黑匣子”,你有数据反馈,并将其返回一些意想不到的输出。
反倒是一套运营商,分别执行一些数据操作。

所以,你必须调试你的代码,意味着你必须附和你的$文本变量出来在你的代码的各个部分,看看它得到改变。最有可能的是得到一些不必要的治疗。找到该代码后,您可以将其删除或在此处询问是否可以。

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

+0

感谢您的回答!我是新来的编码,看来你给我展示的方式,因为这个添加是发送到PHP文件的Ajax,所以我在它上面,会回来的消息。再次感谢。 – toolook 2013-05-01 05:00:31

+0

那么你是正确的,因为AJAX不好用“是encodeURI”的功能,其实是需要“encodeURIComponent方法”时,发送不像URL已经存在,并通过你需要显示像由用户撰写的评论或文本字符组成的值。非常感谢您向我展示道路并为浪费您的时间而道歉。 – toolook 2013-05-01 05:26:48

+0

我错了标签,如果一个版主可以改变他们到字符编码和JavaScript它将是伟大的网站和社区感谢伟大。 – toolook 2013-05-01 05:35:04