插入mysql时遇到问题。
我在javascript中有一个多维数组,它被转换为JSON格式的字符串。 字符串如下所示:
[["text1","text2","te'xt with apostroph'e"],["subarray2","a \u000a unicode number","change line \n \n"]]
所以问题就是这种格式在字段外使用双引号,然后在内部有时我会有单引号,并且你可以看到转义字符\
。
如果我通过ajax将这个从javascript发送到php并在php中解码,那么一切都很好,没问题,完美。
当我需要将其插入mysql时会出现问题。
但无论我做什么,插入都是成功的,但在数据库中双引号转换为单引号,\
转义字符也会消失。
所以在数据库里面我留下了这个:
[['text1','text2','te'xt with apostroph'e'],['subarray2','a u000a unicode number','change line n n']]
这当然是一个问题,因为我需要保留双引号,这样当我稍后从php中读取它时,我可以解码JSON并仍然在文本中保留单引号。此外,\n
新行和\u000a
unicode字符不再起作用,因为转义符已经消失。
我找到了使用htmlspecialchars($thephrase, ENT_QUOTES);
的诀窍
它将双引号转换为"
。这至少保留了我的双引号和单引号分开,但这显然不是理想的解决方案,而且我仍然丢失了转义\
字符。
我正在做的事情或配置显然是错误的,问题与JSON无关,如果我只是直接在mysql双引号和单引号中插入,那么双重转换为单引号。
所以无论如何我想的问题是,在我有双引号,单引号,转义字符和新行字符的文本中,我怎样才能确保当我在mysql中插入所有内容时,我保留所有这些在mysql varchar或text字段中;双引号,单引号,\
转义字符和换行符?
我确保在php.ini中无处不在magic_quotes
非常感谢您的任何建议或帮助。
答案 0 :(得分:1)
现在你应该已经解决了你的问题。为了将来参考,我认为你要找的是php的addslashes()或更具体的mysqli_real_escape_string()。这些函数将转义需要在数据库查询中引用的字符。
另外,我建议您尽可能简洁地写下您的问题。人们倾向于跳过巨大的遗嘱。