Php MySQL-如果输入为空,则返回所有值
我正在为一个网站创建一个高级搜索功能,它几乎完成了,我只有一个主要问题。 我正在这样匹配房间:Php MySQL-如果输入为空,则返回所有值,php,html,mysql,Php,Html,Mysql,我正在为一个网站创建一个高级搜索功能,它几乎完成了,我只有一个主要问题。 我正在这样匹配房间: AND Rooms=" .$_SESSION["room"] ." 也尝试过这个: AND (Rooms=" .$_SESSION["room"] ." OR Rooms IS NULL) 但问题是,如果用户没有在房间输入中插入任何值,它将不会显示任何房间。如果在房间输入中插入“8”,则使用IS NULL代码,如果没有匹配项,则将显示数据库中的所有值。 我不想按要求进行输入 我只需要一个mysql
AND Rooms=" .$_SESSION["room"] ."
也尝试过这个:
AND (Rooms=" .$_SESSION["room"] ." OR Rooms IS NULL)
但问题是,如果用户没有在房间输入中插入任何值,它将不会显示任何房间。如果在房间输入中插入“8”,则使用IS NULL代码,如果没有匹配项,则将显示数据库中的所有值。
我不想按要求进行输入
我只需要一个mysql解决方案,用于在字段为空时返回所有值,而不使用此选项:
if ($_SESSION["room"]==NULL) {}
else{}
完整查询:
`SELECT * FROM secret WHERE secretIDName='1' AND NatureTypeIDName LIKE '%" .$_SESSION["nature"] ."%' AND (NettArea>="
.$_SESSION["NettArea"] ." OR NettArea IS NULL) AND ConditionTypeIDName LIKE'%" .$_SESSION["lifestyle"]
."%' AND ((SUBSTRING_INDEX(SUBSTRING_INDEX(BusinessTypeValues,'|',4),'|',-1)>="
.$_SESSION["BusinessTypeValuesMin"]
." AND SUBSTRING_INDEX(SUBSTRING_INDEX(BusinessTypeValues,'|',4),'|',-1)<="
.$_SESSION["BusinessTypeValuesMax"]
.") OR SUBSTRING_INDEX(SUBSTRING_INDEX(BusinessTypeValues,'|',4),'|',-1) = '') AND (SUBSTRING_INDEX(SUBSTRING_INDEX(BusinessTypeValues,'|',2),'|',-1)='"
.$_SESSION["BusinessTypeValuesType"]
."' OR SUBSTRING_INDEX(SUBSTRING_INDEX(BusinessTypeValues,'|',2),'|',-1)='') AND GarageArea>="
.$_SESSION["GarageArea"]
." AND (LocationIDName LIKE '%"
.$_SESSION["zone1"]
."%' AND LocationIDName LIKE '%"
.$_SESSION["zone2"]
."%' AND LocationIDName LIKE '%"
.$_SESSION["zone3"]
."%') AND (Rooms="
.$_SESSION["room"]
.") LIMIT "
.($page-1)*$Page
.", " .$Page ."";`
`SELECT*FROM secret WHERE secretdName='1'和NatureTypeIDName,如“%”“$\u SESSION[“nature”]。“%”和(NettArea>=”
.$\会话[“NettArea”]”或NettArea为空)和类似“%”的ConditionTypeIDName“$\会话[“lifestyle”]
.“%”和((子字符串索引(子字符串索引(BusinessTypeValues,“|”,4),“|”,和-1)>=”
.$\会话[“BusinessTypeValuesMin”]
“和子字符串索引(子字符串索引(BusinessTypeValues,,,,,,-1)=”
.$\会话[“车库区域”]
“和(类似于“%”的LocationIDName”
.$\会话[“区域1”]
.“%”和类似“%”的LocationIDName
.$\会话[“区域2”]
.“%”和类似“%”的LocationIDName
.$\会话[“区域3”]
“%”)和(房间=”
.$\会话[“房间”]
(“)限制”
.($page-1)*$page
.,“$Page.”`
在您的查询中,检查NULL与检查empty并不相同。我建议您:
AND (Rooms=" .$_SESSION["room"] ." OR Rooms IS NULL OR Rooms <>'')
和(Rooms=“.$”会话[“room”]”或Rooms为NULL或Rooms“”)
另外,强烈建议在将
$\u SESSION
变量注入MySQL
之前过滤该变量,如果它是一个数字,请将其分配给$room=(int)$\u SESSION['room']
,以强制其为整数。在查询中,检查NULL与检查empty不同。我建议如下:
AND (Rooms=" .$_SESSION["room"] ." OR Rooms IS NULL OR Rooms <>'')
和(Rooms=“.$”会话[“room”]”或Rooms为NULL或Rooms“”)
另外,强烈建议在将
$\u SESSION
变量注入MySQL
之前过滤该变量,如果它是一个数字,请将其分配给$room=(int)$\u SESSION['room']
强制它为整数。有几种解决方案,其中之一就是将SQL存储在字符串变量中,然后在值不为null时添加房间条件
$sql=选择…
if($\u会话[“房间]!==NULL){
$sql=$sql.'AND Rooms=“.$\u会话[“房间”]”
}
有几种解决方案,其中之一就是简单地将SQL存储在字符串变量中,然后在值不为null时添加房间条件
$sql=选择…
if($\u会话[“房间]!==NULL){
$sql=$sql.'AND Rooms=“.$\u会话[“房间”]”
}
您可以创建如下条件(我假设“房间”是表示房间数量的数字):
如果$\u会话['room']
为空(用户未指定房间数),则会得到
…始终为TRUE
,因此“房间”条件根本不适用。如果用户指定了房间数,则查询如下所示:
AND (Rooms = 8 OR 8 = 0)
8=0
总是FALSE
,因此有效地,您拥有所需的条件:Rooms=8
您可以创建如下条件(我假设“Rooms”是表示房间数量的数字):
如果$\u会话['room']
为空(用户未指定房间数),则会得到
…始终为TRUE
,因此“房间”条件根本不适用。如果用户指定了房间数,则查询如下所示:
AND (Rooms = 8 OR 8 = 0)
8=0
总是FALSE
,因此有效地,您有了所需的条件:Rooms=8
尝试这样的查询:注意,我用{}而不是“.”连接所有php变量。
SELECT*FROM secret,其中secretdName='1'和NatureTypeIDName(如“{$\u SESSION[“nature”]}%”和(NettArea>={$\u SESSION[“NettArea”]}或NettArea为空)以及ConditionTypeIDName(如“{$\u SESSION[“lifesture”]}%”和((子字符串_索引(BusinessTypeValues),'124;',4),'124;',-1)>={u SESSION BusinessTypeValuesMin和子串索引(子串索引(BusinessTypeValues,“|”,4),“|,”,-1)={$_SESSION[“GarageArea”]}和(LocationIDName类似“{$_SESSION[“zone1”]}%”和LocationIDName类似“{$_SESSION[“zone2”]}%”和LocationIDName类似“{$_sessionsession[“zone3”]}%”)和(Rooms={$_SESSION[“room”})限制($page-1)*,$page,$page);
尝试这样的查询:注意,我用{}而不是“.”连接所有php变量
SELECT*FROM secret,其中secretdName='1'和NatureTypeIDName(如“{$\u SESSION[“nature”]}%”和(NettArea>={$\u SESSION[“NettArea”]}或NettArea为空)以及ConditionTypeIDName(如“{$\u SESSION[“lifesture”]}%”和((子字符串_索引(BusinessTypeValues),'124;',4),'124;',-1)>={u SESSION BusinessTypeValuesMin和子串索引(子串索引(BusinessTypeValues,,,,,,,,,,-1)={$$\u SESSION[“GarageArea”]}和(LocationIDName如“{$\u SESSION[“zone1”]}%”和LocationIDName如“{$\u SESSION[“zone2”]}%”和LocationIDName如“{$\u SESSION zone3”]}%”)和(Rooms={$\u SESSION[“room”})限制($page-1)*,$page,$page)“;
发布完整查询请首先检查如果(!empty($\u SESSION[“room”]){AND Rooms=“.$\u SESSION[“room”];”
如果$\u SESSION[“room”]为空,请不要添加Rooms条件。如果您不想使用如果
s创建查询,您可以像(Rooms=“.$\u SESSION[“Rooms”]或“$\u SESSION Rooms[“room””)发布完整查询请首先检查如果(!empty('$\u SESSION[“room”]){AND Rooms=“.$\u SESSION[“room”];”}
如果$\u SESSION[“room”]为空,请不要添加Rooms条件。如果您不想使用如果
s创建查询,您可以像(Rooms=“.$\u SESSION[“Rooms”]或“$\u SESSION[“room”=”)谢谢你的提示,代码做到了