2010-01-19 69 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