2013-10-04 52 views
2

如何解決這個錯誤的JavaScript + mysql的「簡單的報價」

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本正確的語法以線附近使用 '\' %VALUE%\」 LIMIT 60,20' 手動1

有問題的代碼是

var nombreBuscado = $('input[name=nombreBuscado]').val(); 
    if (nombreBuscado !== "") { 

    statement = " VIEW WHERE COLUMN LIKE " + "\'%" + nombreBuscado + "%\'" ; 
} 

畸形的SQL是

SELECT * FROM VIEW WHERE COLUMN LIKE \'%VALUE%\' LIMIT 60 , 20 

EDITED 選擇是在所述圖,我檢查區分大小寫

+1

你不應該打印' '\%VALUE%\' 的',而不是'\ '%VALUE%\''? – DarkAjax

+0

你是否設法使它工作? –

+0

這仍然不起作用,我會改變這個問題來表明這是一個視圖 – Slinker009

回答

1

你應該有這樣的事情:

var nombreBuscado = $('input[name=nombreBuscado]').val(); 
    if (nombreBuscado !== "") { 

    statement=" VST_ContribuyentesConPV WHERE NOM_CONTRIBUYENTE LIKE " 
       + "'%" + nombreBuscado + "%'" ; 
} 

使用'你沒有逃跑,因爲你是sinside雙引號分隔的字符串。這將打印:

SELECT * FROM VST_ContribuyentesConPV WHERE NOM_CONTRIBUYENTE LIKE '%VALUE%' 

如果你想使用雙引號,那麼你必須轉義:

var nombreBuscado = $('input[name=nombreBuscado]').val(); 
    if (nombreBuscado !== "") { 

    statement=" VST_ContribuyentesConPV WHERE NOM_CONTRIBUYENTE LIKE " 
       + "\"%" + nombreBuscado + "%\"" ; 
} 

這將輸出:

SELECT * FROM VST_ContribuyentesConPV WHERE NOM_CONTRIBUYENTE LIKE "%VALUE%" 

最後一個選擇是,以取代你所有的"'。這將使逃逸(\')工作:

var nombreBuscado = $('input[name=nombreBuscado]').val(); 
    if (nombreBuscado !== "") { 

    statement=' VST_ContribuyentesConPV WHERE NOM_CONTRIBUYENTE LIKE ' 
       + '\'%' + nombreBuscado + '%\'' ; 
} 

jsFiddle demo