的约mysql_real_escpae_string

问题描述:

有趣的问题,我对编辑工作的网站内容简单的形式: - 为标题 文本输入 - 对内容的文本区域的约mysql_real_escpae_string

当添加内容,是没有问题的,allthings添加正常:

$chead  = mysql_real_escape_string(stripslashes($_POST['chead'])); 
$ctext  = mysql_real_escape_string(stripslashes($_POST['ctext'])); 

但edittig是containig的

$chead = 'sdsfsf' "sdgsdgs"ggdsfsdg 

的$ chead = 'sdsfsf'文章时和"sdgsdgs"ggdsfsdg将会丢失! mysql_real_escpae_string有什么问题? 谢谢

+1

对不起,我不明白。你能解释一下吗? – Gumbo 2010-06-16 20:37:21

+1

最有可能的一个HTML问题,你检查页面的_source_(不是浏览器中的实际输出。)除非你的PHP安装被严重破坏,否则mysql_real_escape_string()没有问题(用这个..),我非常怀疑。 – Wrikken 2010-06-16 20:39:49

+0

ofcourse: 当我添加文章时,文章标题()是'sdsfsf'“sdgsdgs”ggdsfsdg。当我编辑这个时,它变成'sdsfsf'和'sdgsdgs'ggdsfsdg是丢失了。 @Wrikken,我检查了html,“sdgsdgs”ggdsfsdg丢失:( – TheNone 2010-06-16 20:41:14

你需要追踪信息在哪里丢失,这可能不是mysql_real_escape_string

检查生成的$chead值(在您指控某个特定功能已损坏您的数据之前,请确保它是这样)。然后检查你正在生成的SQL命令并确保它正在工作。插入/更新记录和请求文章时从数据库返回的值后检查数据库。

根据我的经验,在数据库交互过程中出现程序员错误的可能性要大得多,或者造成比PHP更麻烦的HTML生成。如果你真的把问题追踪到mysql_real_escape_string,你可能需要重新安装PHP和MySQL。

+0

我已经解决了这个问题,在打印输入时添加htmlspecialchars。但我不明白为什么会出现这个问题。 – TheNone 2010-06-17 15:06:19