首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单个sql查询中获取哪个条件失败

问如何在单个sql查询中获取哪个条件失败
EN

Stack Overflow用户
提问于 2015-07-03 04:12:10
回答 1查看 299关注 0票数 0

这可能很奇怪也可能不奇怪。但我需要找出3个条件中的哪一个失败了。

我解释..。

在我的查询中,我有3个条件,如果一切顺利,那么没有问题,但如果其中一个条件失败,我需要知道哪个或哪些条件失败,以便我可以构建适当的响应……

示例:

代码语言:javascript
复制
if(strlen($k) == 16 && filter_var($em, FILTER_VALIDATE_EMAIL)) {
        $con = $c->Con();
        $q = $con->query("SELECT COUNT(*) FROM table WHERE v = '$k' AND ema = '$em' AND ve = '0'");
        $r = $q->fetch_row();
        if($r > 0) { $q = $con->query("UPDATE table SET ve = '1' WHERE v = '$key' AND emails = '$em'");
            if($q){
                $mss = 'Ready'; // MS 1
            }
        } else {
            $mss = 'It was ready'; // MS 2
        }
    } else {
        $mss = 'Something is wrong!'; // MS 3
    }

因此,第一个查询有3个条件,如果一切正常,则转到下一个“查询”,但是,我如何知道其中一个条件是失败的?如果v不匹配,或者如果电子邮件不匹配,或者如果ve不匹配...这样我就可以在MS2上显示正确的信息。而不是一般的信息。

如果v不等于$k,则$mss =‘您的密钥不匹配’;

如果电子邮件不等于$ema,则$mss =‘您的电子邮件不是基金’;

如果ve不等于0,则$mss =‘您的密钥没有值’;

问题是,我想保持它尽可能简短和干净,我可以为每个条件做一个单独的查询,这是一种懒惰的方式,但有效…

EN

回答 1

Stack Overflow用户

发布于 2015-07-03 04:26:01

我可以想出一个笨拙的解决方案,主要将工作转移到PHP。

  1. 将您的查询更改为使用OR选择行。返回可能行的集合。

SELECT v, ema, ve FROM table WHERE v = '$k' OR ema = '$em' OR ve = '0';

  1. 现在检查此结果集以检查条件。

伪多码

代码语言:javascript
复制
while( $row = fetch_row($result) ){
  if( 1 and 2 and 3 ){
    //SUCCESS
  }
  elseif( NOT 1 ){
    //1 is the problem
  }
  elseif( NOT 2 ){
    //2 is the problem
  }
  elseif( NOT 3 ){
    //3 is the problem
  }
}

1、2、3是条件(例如1= ($row'v‘== $k))

您必须弄清楚如何处理多行,理想情况下,模式会阻止这种情况发生。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31193817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档