在FROM子句Classic ASP中找不到语法错误

时间:2013-08-23 11:56:31

标签: asp-classic

我一直试图找到这个语法错误,但似乎无法破解它(经典ASP中的初学者)任何帮助将不胜感激。这是错误消息:

  

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

     

FROM子句中的语法错误。

     

/courses/benv/2410/2013s2/3420384/assign1/show.asp,第29行

代码:

<% option explicit %>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>default.asp</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>

<% dim pic
pic = request.querystring("i")
if pic="" then pic="1"

%>

<!--#include file="dbconn.asp"-->

<div class="container">

<%
 dim sql, info

'This is where the Syntax error is. 

'               0          1       2         3         4
SQL = "select Images.id, filename, location, Alphabet, Numeric "&_
    "from Images "&pic 

set info=conn.execute(SQL)

if info.eof then
response.write "<p>No Data Found</p>"
else
response.write "<p>" &_
               "id<br>" &_
               "filename<br>" &_
               "location<br>" &_
               "Alphabet<br>" &_
               "Numeric<br>" &_ 
               "Description<br>" &_
               "</p>"
do 
  response.write "<p>" &_
                 info(0) & "<br>" &_
                 "<a href=""show.asp?i=" & info(0) & """>" &_
                 "<img src=""images/" & info(1) & """></a>" &_
                 info(2) & "<br>" &_
                 info(3) & "<br>" &_ 
                 info(4) &_ 
                 "</p>"
  info.movenext
  loop until info.eof
  end if 


 conn.close
 %> 

 </div>

 </body>
 </html>

1 个答案:

答案 0 :(得分:2)

因此,首先,使用在QueryString中传入的值可以自行开启SQL注入 - 您应该真正转向参数化查询。

此外,根据您的评论,如果i QueryString参数为空,则pic1。哪个会产生你的SQL语句:

select Images.id, filename, location, Alphabet, Numeric from Images 1

最后1没有意义,这就是您的网页出错的原因。如果您正在尝试设置WHERE子句,则需要更多地填写。 ADO不会为您完成。

您是否希望SQL语句使用i QueryString参数传入的ID过滤掉图片?然后你的SQL看起来像:

select Images.id, filename, location, Alphabet, Numeric from Images WHERE Images.id = 1

您的代码应如下所示:

SQL = "SELECT Images.id, filename, location, Alphabet, Numeric " & _
    "FROM Images WHERE Images.id = " & pic 

希望这有帮助!