代码之家  ›  专栏  ›  技术社区  ›  Woton Sampaio

满足条件

  •  0
  • Woton Sampaio  · 技术社区  · 7 年前

    使用“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";
    
          }
       }
    }
    

    但难道没有一个“正确”的方法来做吗?不需要这些假设?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Sinto    7 年前

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

    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'
    
        2
  •  0
  •   Ankur Patel    7 年前

    你不可能真正知道这两个条件中的哪一个已经满足了。如果您想知道,您将不得不分别执行它们,如下所示:

    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
    
    }