使用GET值的if语句

时间:2014-10-17 13:02:57

标签: php mysql

我在php请求中有以下变量:

myfile.php?location=0&bedrooms=0

这是我用来检索它的代码(我已经指出了字段类型,因为它是我处理请求之间唯一的区别):

$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)

当我有一个请求,例如location = 0& bedrooms = 1时,它工作正常但是卧室= 0我没有结果。

当我将卧室声明更改为

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

它有效。

如果是其他陈述,我应该在卧室里有除''(单引号)以外的东西吗?

有没有更好的方法来解决这个问题?

2 个答案:

答案 0 :(得分:2)

AND bedrooms IN ($bedrooms)

将此更改为

AND bedrooms IN ($ibedrooms)

我知道我已经在评论中对此进行了解答,但是如果你接受我的答案作为一个真正的答案可能会更好,所以人们可以看到答案,而不是仅仅看到已经回答的未回答的问题。

答案 1 :(得分:0)

我处理的方式是这样的。

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中没有设置任何值,则默认选择所有内容。