dou*_*ood 0 sql sql-server asp-classic
我有一个管理页面来搜索要编辑的产品,但页面不断返回错误:
Microsoft OLE DB Provider for SQL Server错误'80040e14'不明确的列名'prod_id'./__admin/searchproducts.asp,第89行
我不确定为什么会出现这个错误,因为页面和网站是另一个网站和相关MSSQL数据库的直接副本,搜索产品页面在该网站上运行.
这是有问题的代码(不知道这里是否容易阅读);
if request("fldSubmitted") <> "" then
if request("fldprodid") <> "" and isNumeric(request("fldprodid")) then
SQL = "select * from products where prod_id = " & cdbl(request("fldprodid"))
else
SQL = "select "
if request("showtop") <> "all" then
SQL = SQL & " top " & request("showtop") & " " & replace(replace(request("orderby")," asc","")," desc","") & ", "
end if
SQL = SQL & "prod_name, prod_id, prod_code, prod_icon, prod_thumb, prod_numViews, prod_archived"
if request("fldLabel") <> "" then SQL = SQl & ", label_name"
if request("fldCat") <> "" then SQL = SQL & ", cat_name"
if request("fldSubcat") <> "" then SQL = SQL & ", subcat_name"
SQL = SQL & " from products"
if request("fldLabel") <> "" then SQL = SQL & ", labels"
if request("fldCat") <> "" then SQL = SQL & ", categories"
if request("fldSubcat") <> "" then SQL = SQl & ", subcategories"
sql = sql & " where 1=1"
if request("fldLabel")<> "" then SQL = SQL & "and prod_label = label_id "
if request("fldCat") <> "" then SQL = SQL & "and prod_category = cat_id "
if request("fldSubcat") <> "" then SQL = SQL & "and prod_subcategory = subcat_id "
if request("fldName") <> "" then SQL = SQL & " and (prod_name like '%" & replace(request("fldName"),"'","''") & "%')"
if request("fldCode") <> "" then SQL = SQL & " and (prod_code like '%" & replace(request("fldCode"),"'","''") & "%')"
if request("fldLabel") <> "" then SQL = SQL & " and prod_label = " & request("fldLabel")
if request("fldCat") <> "" then SQL = SQL & " and prod_category = " & request("fldCat")
if request("fldSubcat") <> "" then SQL = SQL & " and prod_subcategory = " & request("fldSubcat")
if request("fldArchived") = "No" then
SQL = SQL & " and prod_archived = 0"
if request("instock") = "No" then SQL = SQL & " and prod_numleft > 0"
end if
SQL = SQL & " order by " & request("orderby")
end if
Run Code Online (Sandbox Code Playgroud)
问题是查询将选择列prod_id,但引用的多个表中有一个具有该名称的列.
查询返回多个表的结果,但确切地说哪个表取决于各种参数的值.所以,这可以解释为什么它在一种情况下起作用而不是另一种情况.
您可以prod_id通过在表名前添加前缀来明确指定引用,例如
myTable.prod_id
Run Code Online (Sandbox Code Playgroud)
我认为(对你来说)哪个表是正确的(当然它必须是一个总是查询的一部分的表,而不是仅在某些情况下才存在的表).
| 归档时间: |
|
| 查看次数: |
5814 次 |
| 最近记录: |