Re: [JSP ] 分頁傳SQL語法的問題

看板java作者 (空氣般的存在)時間19年前 (2006/07/26 21:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《happychung (嗯~好好想想XD)》之銘言: : 他會顯示 : java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] : 查詢運算式 'stdno LIKE' 中的 語法錯誤 (少了運算元)。 : //----------------------------------- : ResultSet rs = stmt.executeQuery(sql); : //分頁部份 : if ( pageNo > 1 ) // 有上一頁 : out.print("| <a href='browse_test.jsp?Page="+(pageNo-1)+ : "&Sql="+sql"'>上一頁</a> |"); : if ( pageNo < totalPages ) // 有下一頁 : out.print("| <a href='browse_test.jsp?Page="+(pageNo+1)+ : "&Sql="+sql+"'>下一頁</a> |"); : //----------------------------------- 我想,問題應該是出在 out.print("| <a href='browse_test.jsp?Page="+(pageNo-1)+ "&Sql="+sql"'>上一頁</a> |"); 這一行程式!! 因為你使用的是HTTP GET的方式傳SQL語法字串 所以再傳SQL參數的時候,導致單引號判讀錯誤... 用實例講清楚一點好了... 假設現在你傳入的參數是 sql=SELECT * FROM students WHERE stdno LIKE '%93%' pageNo = 3 那麼帶入那行out.print()裡面就會變成 | <a href='browse_test.jsp?Page=2& Sql=SELECT * FROM students WHERE stdno LIKE '%93%''>上一頁</a> | 有沒有看出什麼端倪來?? 就是其實 sql抓到的參數為 SELECT * FROM students WHERE stdno LIKE 只有這樣而已.... 請使用跳脫字元隔離字串內的單引號.... 或者使用POST的方式傳SQL語法字串吧!! 以上,希望對你有幫助!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.18.208 ※ 編輯: ruwa 來自: 61.230.18.208 (07/26 21:41)
文章代碼(AID): #14nsskW6 (java)
討論串 (同標題文章)
文章代碼(AID): #14nsskW6 (java)