繁体   English   中英

满意的条件

[英]Satisfied condition

使用“ OR”进行MySql PHP查询时,如何知道两个条件中的哪一个已得到满足?

例:

if($mysql->query("SELECT * FROM `table` WHERE cpf = '0' OR state = '0'")->fetch_assoc()){
//Which was satisfied?

}

请记住,在这些查询中的每个查询中最多只能有2条记录。

我考虑过这样做:

if($th = $mysql->query("SELECT * FROM `table` WHERE cpf = '0' OR state = '0'")->fetch_assoc()){
    while($row = $th){
       if($row['cpf'] == "0"){
               echo "CPF";

       }else if($row['state'] == "0"){
               echo "state";

      }
   }
}

但是,没有做到这一点的“正确”方法吗? 不需要这些if吗?

必须检查从执行查询得到的结果数组。

if($row = $mysql->query("SELECT * FROM `table` WHERE cpf = '0' OR state = '0'")->fetch_assoc()){
    if ($row['cpf'] == 0) { /* cpf satisfied*/ }
    if ($row['state'] == 0) { /* state satisfied*/ }
}

给您的一个小建议:尝试使用$mysqli不是$mysql

您还可以检查以下内容:

SELECT *, 
(CASE WHEN cpf = '0' THEN 'cpf satisfied' 
WHEN state = '0' THEN 'state satisfied' END) AS satisfied 
FROM `table` WHERE cpf = '0' OR state = '0'

您不能真正知道两个条件中的哪个已被满足。 如果您想知道,则必须单独执行它们,如下所示:

if($mysql->query("SELECT * FROM `table` WHERE cpf = '0'")->fetch_assoc()){
//cpf = 0 was satisfied

}
if($mysql->query("SELECT * FROM `table` WHERE state = '0'")->fetch_assoc()){
//state = 0 was satisfied

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM