Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.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 MySQL-如果输入为空,则返回所有值_Php_Html_Mysql - Fatal编程技术网

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”=”)谢谢你的提示,代码做到了