2013-12-15 271 views
0

我創建了一個網站,我正在努力與SQL的部分,下面是兩個單獨的聲明,我正在努力,如果你知道什麼可能是他們中的任何一個id感謝它。SQL與asp經典

這是聲明

readsql = "SELECT * FROM Gallery WHERE <%=GalleryRs ("img_USERID")%> = <%=session ("usr_ID")%>" 

這是錯誤

預期語句的端

/WIP/Gallery.asp 20行

readsql =「SELECT * FROM Gallery WHERE <%= GalleryRs(「img_USERID」) ---------------------- --------------------------------^

這是第二條語句

INSERT INTO like (lik_POSTID) VALUES('" &_ 
request("pos_ID") & "') 

和錯誤

Microsoft Access數據庫引擎錯誤 '80040E14'

語法錯誤INSERT INTO語句中。

/student/S0190204/WIP/like.asp 56行

如果你可以用任何一個,這將是盛大,感謝幫助

回答

2

嘗試

readsql = "SELECT * FROM Gallery WHERE "& GalleryRs("img_USERID")&" = "& session("usr_ID") 

<%=%>使一個asp代碼塊中沒有任何意義。這是因爲當你想你的HTML代碼中嵌入一個asp變量 - 在「=」號是速記的Response.Write - 如

<h1><%= pagetitle %></h1> 

另外請注意,我已經「GalleryRs」後取出的空間和「會話」

編輯

readsql = "SELECT * FROM Gallery WHERE "& GalleryRs("img_USERID")&" = '"& session("usr_ID") & "'" 
+0

感謝這讓我進一步,雖然它說類型不匹配現在。任何想法這意味着什麼? – Jayyf9

+0

GalleryRs(「img_USERID」)和會話(「usr_ID」)的價值是什麼? – kloarubeek

+0

類型不匹配通常發生在期望數字並且頁面接收到字符串時。嘗試使用「Cint(GalleryRs(」img_USERID「))」和「Cint(session(」usr_ID「))」 – John

0

你選擇SQL應該是這樣的,當它得到到數據庫:

select * 
from Gallery 
where img_UserId = something 

您發送:

select * 
from Gallery 
where <%= etc 

您的字段名稱不包含<%。看看你爲什麼在那裏使用變量。除非您的where子句中的字段每次都不相同,否則不要使用變量。

0
readsql = "SELECT * FROM Gallery WHERE <%=GalleryRs ("img_USERID")%> = <%=session ("usr_ID")%>" 

應該

readsql = "SELECT * FROM Gallery WHERE " & GalleryRs("img_USERID") & " = " & session ("usr_ID") 

我同意丹,爲什麼使用變量爲您的字段名稱?除此之外,這段代碼具有很高的'sql注入友好性'。至少驗證GalleryRs(「img_USERID」)和會話(「usr_ID」)中的值是(轉換爲int還是檢查長度)。更好的是把它移動到一個存儲過程!