0

我一直试图找到这个语法错误,但似乎无法破解它(经典 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>
4

1 回答 1

2

因此,首先,使用传入 QueryString 的值打开 SQL 注入 - 你真的应该转向参数化查询。

此外,根据您的评论,如果iQueryString 参数为空,pic则为1. 这将使您的 SQL 语句:

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

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

您是否希望您的 SQL 语句过滤掉带有通过iQueryString 参数传入的 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 

希望这可以帮助!

于 2013-08-23T12:07:45.480 回答