php - PDO 选择倍数 count()

标签 php mysql pdo count

这是我想在 MYSQL_QUERY 中说的话

$query = "SELECT (SELECT COUNT(type) FROM msg WHERE view = 0 AND nd = 'test' AND type = 0) as inbox,
   (SELECT COUNT(type) FROM msg WHERE view = 0 AND nd = 'test' AND type = 1) as sent,
   (SELECT COUNT(type) FROM msg WHERE view = 0 AND nd = 'test' AND type = 2) as draft,
   (SELECT COUNT(type) FROM msg WHERE view = 0 AND nd = 'test' AND type = 3) as spam,
   (SELECT COUNT(type) FROM msg WHERE view = 0 AND nd = 'test' AND type = 4) as trash";

我喜欢使用 PDO,我尝试过这个,但出现错误:

$query=$db->prepare("SELECT 
(SELECT COUNT(*) as inbox FROM msg WHERE view = :view AND nd = :nd AND type = :type),
(SELECT COUNT(*) as sent FROM msg WHERE view = :view AND nd = :nd AND type = :type),
(SELECT COUNT(*) as draft FROM msg WHERE view = :view AND nd = :nd AND type = :type),
(SELECT COUNT(*) as trash FROM msg WHERE view = :view AND nd = :nd AND type = :type)
");
$query->execute(array(
':view' => 0,
':nd' => 'test',
':type' => 1
    ));
$pageRow=$query->fetch(PDO::FETCH_NUM);
$inbox = $pageRow[0];
$sent = $pageRow[1];
$draft = $pageRow[2];
$trash = $pageRow[3];

最佳答案

试试这个查询:

SELECT IFNULL(SUM(type = 0), 0) as inbox,
       IFNULL(SUM(type = 1), 0) as sent,
       IFNULL(SUM(type = 2), 0) as draft,
       IFNULL(SUM(type = 3), 0) as spam,
       IFNULL(SUM(type = 4), 0) as trash
FROM msg
WHERE view = :view AND nd = :nd

关于php - PDO 选择倍数 count(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17893170/

相关文章:

javascript - 如何通过ajax删除数据库中的行

php - 拉维尔 4 : Recursive table one to many

mysql - 用通配符替换文本

php - 带有 MySQL 插入 PDO 请求的错误 HY093

php - MySQL 联结表查询(带或不带联结)

php - 创建一个数组并将选定的值存储为键和值

php - Guzzle 无法绕过 cURL 错误 35 : SSL connect error

php - 输出 JSON 时网页未加载 PHP-MySQL 代码

Java,保持近乎恒定的SQL连接

php - 更新失败 : Select Command Denied for User (vahejaba @ localhost)