Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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_Mysql - Fatal编程技术网

Php 如何使用带可选值的多个条件从Mysql表中获取值

Php 如何使用带可选值的多个条件从Mysql表中获取值,php,mysql,Php,Mysql,我需要使用多个条件从MYSQL表中检索所有数据,但这里有些输入是可选的。我在下面解释我的表格 db_考试: 我正在传递下面的输入以获取所有数据 reg_no=12 zone=3 center=AB sub_code=2 从上面的输入中,一些是可选的,这意味着列中心和子_code的值可能存在或可能为空。在这里,我需要使用上述条件和列center=AB或center='和sub_code=2或sub_code=''的值进行查询以获取所有数据。但前2个条件是必需的。使用下面的查询 select *

我需要使用多个条件从MYSQL表中检索所有数据,但这里有些输入是可选的。我在下面解释我的表格

db_考试:

我正在传递下面的输入以获取所有数据

reg_no=12
zone=3
center=AB
sub_code=2
从上面的输入中,一些是可选的,这意味着列
中心和子_code
的值可能存在或可能为空。在这里,我需要使用上述条件和列
center=AB或center='
sub_code=2或sub_code=''
的值进行查询以获取所有数据。但前2个条件是必需的。

使用下面的查询

select * from db_exam where reg_no=12 and zone=3 and (center=AB or center='') and (sub_code=2 or sub_code='')

用户查询中的位置,如下所示。 传递输入值和默认值,如空字符串“”。

SELECT * 
FROM db_exam
WHERE (reg_no = <number> AND zone= <number> AND center IN (<input>, '') AND sub_code IN (<input>, ''));
选择*
来自db_考试
其中(reg_no=和zone=和中心位于(,'')和子代码位于(,'');
如果我错了,请纠正我。

试试这个:

    SELECT
        t1.id
       ,t1.name
       ,t1.reg_no
       ,t1.zone
       ,t1.college
       ,t2.center
       ,t3.sub_code
    FROM db_exam t1
    INNER JOIN db_exam t2
    ON t2.id=t1.id
    AND t2.center='AB'
    INNER JOIN db_exam t3
    ON t3.id=t1.id
    AND t3.sub_code=2;

使用内部联接和外部联接,这些联接允许您仅在两侧匹配时有条件地选择数据。这不起作用…查询仅在所有内容都匹配时返回某些内容…当匹配有效时,您需要使用左联接和右联接来选择部分。您可以直接输入可能不正确的输入值。
    SELECT
        t1.id
       ,t1.name
       ,t1.reg_no
       ,t1.zone
       ,t1.college
       ,t2.center
       ,t3.sub_code
    FROM db_exam t1
    INNER JOIN db_exam t2
    ON t2.id=t1.id
    AND t2.center='AB'
    INNER JOIN db_exam t3
    ON t3.id=t1.id
    AND t3.sub_code=2;