Php PDO选择倍数计数()

Php PDO选择倍数计数(),php,mysql,pdo,count,Php,Mysql,Pdo,Count,下面是我想在MYSQL\u查询中说的话 $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

下面是我想在MYSQL\u查询中说的话

$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

您可能会遇到什么错误。。。隐马尔可夫模型。。让我想想,可能是什么。。。在所有存在的错误中,您只能使用命名参数一次,而不是每次使用四次。即使您可以重用命名参数,当所有子查询使用相同的
:type
?谢谢Barmar,听起来很酷,我没有看到错误,但如何打印受影响的行?echo$pageRow[0]; ? 您可以手动运行查询吗?无论是从
mysql
命令行工具还是phpmyadmin?我想Simon关于错误的评论并没有促使您将错误报告添加到脚本中。