2012-01-17 47 views
-2

我正在向服務器發送JSONArray,在該服務器中,腳本解碼它並使用其中的數據更新MYSql數據庫。現在的問題是,一切正常,直到腳本遇到一個字段包含一個撇號,我明白是由php用作轉義字符。JSON中發送的保留撇號

如何避免這種情況,同時仍然保留撇號?我是否在Android端添加了一些內容,然後將其移除到服務器端,還是可以在服務器端忽略它,同時仍然保留它?

任何幫助表示讚賞。

+0

PHP的轉義字符是反斜槓,撇號從未被用作PHP的轉義。如果在json字符串中有撇號,則它本身應該用反斜槓進行轉義,例如, '{「x」:「This quote is escaped」} – 2012-01-17 16:38:50

+0

如果它不能像預期的那樣工作,它會做什麼?它何時停止按預期行事?解析JSON?插入到數據庫中?(我打賭這是[Bobby-Tables](http://bobby-tables.com/)地區)被拉出數據庫?magic_quotes是否搞亂了數據? – Quentin 2012-01-17 16:40:54

回答

1

在行之間閱讀,你的問題不是PHP將撇號視爲逃避(它不),但你不是sanitising your database input

在MySQL查詢中,撇號具有特殊含義(字符串封裝器),並且存在未轉義的撇號會破壞您的SQL語法。

我不知道你正在使用的數據庫驅動程序,但您可能需要其中之一:

...或更好,使用prepared statements

+0

非常感謝Dave,will給上面的一個去。 – 2012-01-17 18:19:09