當我插入到mysql時遇到問題。插入到mysql時保留雙引號和單引號以及轉義字符
我有一個JavaScript中的多維數組,它被轉換成JSON格式的字符串。 字符串看起來像這樣的例子:
[["text1","text2","te'xt with apostroph'e"],["subarray2","a \u000a unicode number","change line \n \n"]]
所以事情是,這種格式使用的字段外雙引號,然後裏面有時我有單引號和轉義字符\
,你可以看到。
如果我通過ajax將這個javascript發送到php並在php中解碼它,它一切正常,沒有問題,完美。
當我需要將它插入到mysql時,問題出現了。
- magic_quotes的是關閉無處不在php.ini
- 我使用mysql_real_escape_string功能之前,我在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字段中;雙引號,單引號,\
換碼符和換行符?
我已經確保magic_quotes的是關閉無處不在php.ini
非常感謝您提出的任何建議或幫助。
嘗試使用PDO(http://www.php.net/pdo)代替;使用古老的mysql庫以及使用mysql_real_escape_string自己完成所有工作更容易,更可靠... – 2010-12-10 07:13:00
非常有趣,感謝您的建議,我將研究並嘗試在下一個項目中使用PDO,但對於此項目,我無法使用改變整個代碼,應該有一種方法來解決它希望沒有pdo,事情是,保留雙引號和轉義字符時,插入到mysql應該很容易完成:)東西我做錯了肯定:)再次感謝你: ) – 2010-12-10 07:46:46