使用如果GET语句值

问题描述:

我有一个PHP请求以下变量:使用如果GET语句值

myfile.php?location=0&bedrooms=0 

这是我使用检索它(我已经指示字段类型,因为它的唯一differnce代码我如何处理请求):

$location = intval($_REQUEST['location']); 
Field Type = int(11) 

$bedrooms = intval($_REQUEST['bedrooms']); 
Field Type = tinyint(3) 

这是怎么了处理变量:

if ($location == 0) 
$ilocation = '2,3,4,5,6,7'; 
else 
$ilocation = $location; 

if ($bedrooms == 0) 
$ibedrooms = '-1,1,2,3,4,5,6,7,8,9'; 
else 
$ibedrooms = $bedrooms; 

这是我如何在我的查询中使用它:

Where realty.published = '1' AND locid IN ($ilocation) AND bedrooms IN ($bedrooms) 

时,我有一个请求,例如位置= 0 &卧室= 1,它工作正常,但卧室= 0我没有得到任何结果。

当我改变卧室声明

AND bedrooms IN (-1,1,2,3,4,5,6,7,8,9) 

它的工作原理。

我应该在卧室里还有其他的东西吗?(单引号)if else语句?

有没有更好的方法来处理这个问题?

+0

因为'1,1,2,3,4'与'1,1,2,3,4'不同。您可能需要将它们存储为数组 – 2014-10-17 13:06:24

+5

'卧室(卧室)'不应该是'和卧室($ ibedrooms)'? – 2014-10-17 13:09:42

+0

@Déjàvu非常感谢你,我一直在改变这一切,并错过了这一点。 – CDubYaa 2014-10-17 13:20:15

AND bedrooms IN ($bedrooms)

改变这

AND bedrooms IN ($ibedrooms)

我知道我已经在评论asnwered这一点,但也许如果你接受我的回答作为一个实际的答案,使人们可以看到它的回答是更好而不是仅仅看到它已经回答的问题。

我处理的方式就是这样。

if (!isset($_GET['location']) || intval($_GET['location']) == 0){ 
    $ilocation = '2,3,4,5,6,7'; 
} 
else { 
    $ilocation = intval($_GET['location']); 
} 

if (!isset($_GET['bedroom']) || intval($_GET['bedroom']) == 0){ 
    $ibedrooms = '-1,1,2,3,4,5,6,7,8,9'; 
} 
else { 
    $ibedrooms = intval($bedrooms); 
} 

这样,如果URL中没有设置任何值,它将默认选择所有内容。