2010-01-19 71 views
0

我为我的网站编码简单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 %> 
+0

为什么你有'输入代码中间here'耳光? – 2010-01-19 03:12:34

回答

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()为ISNULL为您objCategory("CATEGORYID")

尝试测试(),因为我觉得FIEL d的值是零,如果不存在记录

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

0

OK,我对经典的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注入攻击的影响。我会建议一个存储过程。

+0

什么是存储过程? – 2010-01-19 03:41:39

+0

它基本上是你传递参数的部分编译的SQL语句。你可以在这里看到更多:http://en.wikipedia.org/wiki/Stored_procedure – CSharper 2010-01-29 18:52:40