Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQLSRV查询以返回列下列出的所有产品_Php_Sql_Sql Server - Fatal编程技术网

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