SQL与asp经典

时间:2013-12-15 20:25:43

标签: sql ms-access asp-classic

我正在为我创建一个网站并且正在努力学习SQL部分,下面是我正在努力解决的两个单独的陈述,如果你知道什么可能是他们中的任何一个的问题,我很欣赏它。

这是声明

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

这是错误

  

预期声明结束

     

/WIP/Gallery.asp,第20行

     

readsql =“SELECT * FROM Gallery WHERE&lt;%= GalleryRs(”img_USERID“)       -------------------------------------------------- ---- ^

这是第二个陈述

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

和错误

  

Microsoft Access数据库引擎错误“80040e14”

     

INSERT INTO语句中的语法错误。

     

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

如果你可以帮助任何一个盛大的,谢谢

3 个答案:

答案 0 :(得分:1)

尝试

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

&lt;%=%&gt;在asp代码块中没有任何意义。当你想在你的html代码中嵌入一个asp变量时,这就是&#34; =&#34; sign是Response.Write的简写 - 例如

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

另请注意,我已经在#Gallery;&#34; GalleryRs&#34;之后取出了空格。和&#34;会议&#34;

被修改

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

答案 1 :(得分:0)

当你的select sql到达数据库时,它应该是这样的:

select *
from Gallery
where img_UserId = something

您正在发送:

select * 
from Gallery
where <%= etc

您的字段名称不包含&lt;%。看看你在那里使用变量的原因。除非where子句中的字段每次都不相同,否则不要使用变量。

答案 2 :(得分: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”)和session(“usr_ID”)中的值是什么(转换为int或检查长度)。更好的是将其移动到存储过程!