首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算和显示PHP回送的不同列中的多个mysql行值

问计算和显示PHP回送的不同列中的多个mysql行值
EN

Stack Overflow用户
提问于 2016-10-11 16:44:29
回答 2查看 1.8K关注 0票数 0

我使用以下mysql语句来计数和检索mysql数据库中的多个数据库行:

代码语言:javascript
复制
SELECT COUNT(*) FROM leavesrecords WHERE leavetype IN ('Casual','Annual','Medical') and empno = '202'  GROUP BY leavetype

但是,此查询的输出仅包含一个列,列名为COUNT(*)。此查询返回三个计数值,我希望这些值为PHP变量赋值。下面的PHP代码是我用来获取值的:

代码语言:javascript
复制
include 'database.php';
$query = "SELECT COUNT(*) FROM leavesrecords WHERE leavetype IN ('Casual','Annual','Medical') and empno = '202'  GROUP BY leavetype; ";
$stmt = $con->prepare($query);
$stmt->execute();

$num = $stmt->rowCount();
if($num>0){
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
        extract($row);
        echo $row["leavesrecords"];
    } 
}
else{ echo "";}
?>

但这段代码在没有显示单个值的情况下向我抛出一个错误。我想将这三个mysql计数分配给三个mysql变量。我怎么能这么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-11 16:52:33

考虑在查询中使用IF或CASE语句返回一行:

代码语言:javascript
复制
 SELECT sum(if(leavetype='Casual',1,0)) AS `CasualCount`,
    sum(if(leavetype='Annual',1,0)) AS `AnnualCount`,
    sum(if(leavetype='Medical',1,0)) as `MedicalCount`
FROM leaverecords
WHERE leavetype IN ('Casual','Annual','Medical') and empno = '202';

现在,您将有一个有三个字段的行。

票数 0
EN

Stack Overflow用户

发布于 2016-10-11 16:49:27

应该对thr列结果使用别名。

代码语言:javascript
复制
 SELECT COUNT(*) as my_count 
 FROM leavesrecords 
 WHERE leavetype IN ('Casual','Annual','Medical') and empno = '202'  GROUP BY leavetype

并引用使用键别名的列。

代码语言:javascript
复制
if($num>0){
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){
        // extract($row);
        echo $row["my_count"];
    } 
}

您不应该使用tablename来引用行内容,而应该引用正确的列名。

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

https://stackoverflow.com/questions/39982428

复制
相关文章

相似问题

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