我想建立一个免费的婚姻网站,其中的主页拥有一个简单的窗体,一些文本框&下拉菜单和一个搜索按钮。如何制作高级搜索查询?
点击后,它将访问者带到另一个页面以及所有字段的查询字符串。
我用下面的存储过程来显示搜索结果。 参数:
cmd.Parameters.AddWithValue("@cat", cat);
cmd.Parameters.AddWithValue("@subcat", subcat == "-1" ? "-1" : "," + subcat);
cmd.Parameters.AddWithValue("@state", state);
cmd.Parameters.AddWithValue("@city", city == "-1" ? "-1" : "," + city);
ALTER PROCEDURE [dbo].[SearchGetAdPageWise]
,@cat INT
,@subcat NVARCHAR(10)
,@state INT
,@city NVARCHAR(10)
AS
BEGIN
SET NOCOUNT ON;
SELECT ROW_NUMBER() OVER
(
ORDER BY a.ad_type ASC,NEWID()
)AS RowNumber
,a.Id
,a.ad_title
,b.Name a_state
,a.ad_brief
,a.ad_pic
INTO #Results
FROM [tbl_ads] a LEFT JOIN tbl_state b ON a.ad_state=b.Id
WHERE ([email protected] OR a.ad_cat='-1' OR a.ad_cat='')
AND ((a.ad_subcat LIKE N'%'[email protected]+'%' OR a.ad_subcat LIKE N'%'[email protected]) OR a.ad_subcat='-1' OR a.ad_subcat='')
AND ([email protected] OR a.ad_state='-1' OR a.ad_state='')
AND ((a.ad_city LIKE N'%'[email protected]+'%' OR a.ad_city LIKE N'%'[email protected]) OR a.ad_city='-1' OR a.ad_city='')
问题是我坚持OR &和
,如果我使用或它就会出现很多不相关的结果。
如果我使用AND,那么如果任何搜索查询是空的。
对不起,我是新手,我的问题可能对您的朋友太幼稚了。
另一个问题,如果它的最好的&安全的方式来做到这一点?如果不是,那我该如何改进呢?
看起来像逗号会导致一个问题,参数中的:“” + SUBCAT 。我认为这应该只是subcat,因为你将它与ad_subcat列的内容进行比较。 –
@Mike在适当的地方使用表格的默认值。 – WorkSmarter
{a.ad_subcat LIKE N'%'+ @ subcat +'%'或a.ad_subcat LIKE N'%'+ @ subcat} - 第二部分在这里是不必要的,它看起来应该由第一部分 – bf2020