Php SQLSRV查询以返回列下列出的所有产品
这是我的密码Php SQLSRV查询以返回列下列出的所有产品,php,sql,sql-server,Php,Sql,Sql Server,这是我的密码 if (isset($_GET["range"])) { $range = $_GET["range"]; } else { $range = BLOB; } 基本上,我使用GET变量来搜索“range”列下的表。唯一的问题是,在没有设置范围的情况下,我想要一个可以返回所有产品的默认变量 我这样做是为了避免包含多个SQL查询。请注意,我试图替换的代码部分是BLOB。有什么想法吗 编辑:如果你要投票否决我的问题,至少要有礼貌地评论原因。我想评论,但我不能,因为我的声誉,所以我会尽力
if (isset($_GET["range"])) { $range = $_GET["range"]; } else { $range = BLOB; }
基本上,我使用GET变量来搜索“range”列下的表。唯一的问题是,在没有设置范围的情况下,我想要一个可以返回所有产品的默认变量
我这样做是为了避免包含多个SQL查询。请注意,我试图替换的代码部分是BLOB。有什么想法吗
编辑:如果你要投票否决我的问题,至少要有礼貌地评论原因。我想评论,但我不能,因为我的声誉,所以我会尽力回答我理解的问题 如果查询以以下内容结束(无论语法是否正确): 试试像这样的东西
<?php
if(isset($_GET['range']) && is_int($_GET['range']))
$range = ' LIMIT 0, '.$_GET['range'];
else
$range = '';
你在问“我有一个地方,我在那里放了一段数据作为过滤器(服装系列的名称),以限制搜索的返回。”。如果我没有选择一个特定的服装系列,我可以在那个过滤器里放什么?”
SQL有一个数据值指示“我在此字段中没有有意义的数据”:NULL
对于要筛选的衣服范围,您没有任何有意义的信息,因此处理此问题的一种可能方法是为范围传入一个NULL,然后让SQL端处理带有range\u variable=range\u列或range\u变量的参数为NULL
下面是一个简单的示例,您可以看到它是如何工作的:
create table clothing (range varchar (20))
insert into clothing
select 'Value1'
union select 'value2'
union select 'value3'
select * from clothing
declare @range_var varchar(20)
set @range_var = 'value2'
select * from clothing
where range = @range_var or @range_var is null
set @range_var = NULL
select * from clothing
where range = @range_var or @range_var is null
GO
drop table clothing
你最好把你的炉灶消毒一下。这取决于它在查询中的位置,但如果它在range=
之后,则用'0或1'
替换BLOB将选择表中的所有行。不,这不起作用。让您知道,range代表一个“服装系列”,这是一个电子商务网站。LIMIT子句不是sqlsrv语法。此外,该系列还代表一系列产品(男士、女士、中性款等)。我正在寻找一段代码,如果没有设置,它将返回任何范围,尽管NULL将不返回任何内容。我想要的是相反的结果,我想要返回一切如果range列中的值为null,则返回yes。这将查看要传递到SQL中的range_变量,如果为null,则返回所有内容。我将在我的答案后面附上一个例子。
<?php
$range = (isset($_GET['range']) && is_int($_GET['range'])) ? ' LIMIT 0, '.$_GET['range'] : '';
create table clothing (range varchar (20))
insert into clothing
select 'Value1'
union select 'value2'
union select 'value3'
select * from clothing
declare @range_var varchar(20)
set @range_var = 'value2'
select * from clothing
where range = @range_var or @range_var is null
set @range_var = NULL
select * from clothing
where range = @range_var or @range_var is null
GO
drop table clothing