我在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)
它有效。
如果是其他陈述,我应该在卧室里有除''(单引号)以外的东西吗?
有没有更好的方法来解决这个问题?
答案 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中没有设置任何值,则默认选择所有内容。