2013-11-25 25 views
0

我昨天花了整整一天的時間試圖調試這個,我無法取得任何進展。情況:我正在使用Phonegap爲iOS平臺創建應用程序。我正在使用一個數據庫來存儲各種數據(這是一個高爾夫記分卡應用程序)。現在我試圖在我的課程表中存儲一個對象數組,但它返回的錯誤代碼是「Error:could not prepare statment(1 near」bl​​ah「:syntax error)code:5」在Phonegap中使用JSON更新SQL值

這裏是代碼這是造成問題。

//for example 
var string = JSON.stringify(['dag', 'woah']); 
db.transaction(function (tx){ 
      tx.executeSql('UPDATE courses SET holes_info = "' + string + '" WHERE course_id = "' + course_id + '"', [], nullHandler, errorHandler); 
     }); 

在我的課程表中,holes_info列設置爲數據類型TEXT。所以,如果我使字符串= JSON.stringify([1,2,3]),此代碼工作。如果我在數組中使用整數,它會起作用,但是如果我使用文本,它不會。我試着把它與單引號和雙引號混合起來,但那也沒有幫助。我的目標是存儲對象的數組,看起來像這樣...

var hole_object = { 
    "par": 0, 
    "yards": 0, 
    "score":0, 
    "drives":0, 
    "irons": 0, 
    "wedges": 0, 
    "putts": 0, 
    "strokes": 0 
}; 

每次它說有一個「1近‘平價’:語法錯誤」。計算器上的另一個人問過類似的問題,並表示,使用轉義例如...

var string = escape(JSON.stringify(['dag', 'woah'])); 

但是,這並沒有幫助。所以我已經嘗試了所有我能想到的方法來實現這個目標,但沒有任何表現。如果必須的話,我會爲每個課程創建一個表來存放hole_object數組數據,但是我想看看是否有辦法讓上述工作先行。

再次感謝您的幫助!

回答

0

只需使用參數:

tx.executeSql("UPDATE courses SET holes_info = ? WHERE course_id = ?", 
       [string, course_id], nullHandler, errorHandler); 
+0

CL,我會給一個嘗試只要我能在這裏。感謝您的建議! – Panda4Man

+0

非常感謝,它的工作!我不知道你可以使用這樣的參數,所以謝謝你教我兩件新事物。 – Panda4Man