匹配字符串与数据库

时间:2010-01-19 03:11:07

标签: asp-classic

我正在为我的网站编写简单的404 seo。我有点困惑。我需要代码来查看类别表,看看它是否与字符串匹配。如果是,那么它应该打印类别的名称,如果没有,那么它应该显示“找不到页面”消息。我不明白我在哪里错了...

> > <%
> >     WebsiteQueryString = Request.QueryString
> >     SplitQueryString = split(WebsiteQueryString, "/")
> > 
> >     SQL = "SELECT C.CATEGORYID,
> > C.CATEGORYNAME"     SQL = SQL & " FROM
> > CATEGORIES C"   Set objCategory =
> > objConn.Execute(SQL)    
> > 
> >     If objCategory("CATEGORYID") =
> > SplitQueryString(4) Then     %>
> > 
> > <%=objCategory("CATEGORYNAME")%>
> > 
> > <% Else %>
> > 
> 
>     enter code here`page not found.
> 
> > 
> > 
> > <% End If %>

2 个答案:

答案 0 :(得分:0)

好的,我对Classic ASP有点生疏,但似乎你可能想要更像这样的东西:

<% 
    WebsiteQueryString = Request.QueryString 
    SplitQueryString = split(WebsiteQueryString, "/") 

    ' I'm assuming SplitQueryString(4) is a number, as is CATEGORYID
    SQL = "SELECT CATEGORYNAME FROM CATEGORIES WHERE CATEGORYID = " & SplitQueryString(4)
    Set objCategory = objConn.Execute(SQL)     

    If objCategory("CATEGORYNAME") <> "" Then

    Response.Write(objCategory("CATEGORYNAME"))

    Else %> 

  enter code here`page not found. 

<% End If %> 

另一个主要评论。采用这种方法会使您非常容易受到SQL注入攻击。我建议使用存储过程。

答案 1 :(得分:0)

一些提示:

1 /使用cInt(或cStr)

If objCategory("CATEGORYID") = SplitQueryString(4) Then   

如果SplitQueryString(4)是一个数字,请尝试将cInt(放在两个操作数之前,如

If cInt(objCategory("CATEGORYID")) = cInt(SplitQueryString(4)) Then   

如果遇到需要这样做的情况进行比较。

2 /尝试在屏幕上显示值,然后再进行比较(你确定要与正确的元素进行比较吗?)

Response.Write( "[" & objCategory("CATEGORYID" & "]")
Response.Write( "[" & SplitQueryString(4) & "]" )

我总是在它们周围放置括号,以查看是否存在空字符串

3 /测试IsNull()

尝试为objCategory("CATEGORYID")测试IsNull(),因为我认为如果记录中没有字段值,则字段值为空

4 /确保使用正确的字段名称(CATEGORYID) - 检查拼写