Hacer 3 consultas me parece pésima idea. Mejor si lo haces como dice GatorV:
Código PHP:
Ver original<?php
try {
$pdo = new PDO('mysql:host=localhost;dbname=test', 'root', '12345');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$stmt = $pdo->prepare('SELECT autor, SUM(IF(estado = 1, 1, 0)) esperando, SUM(IF(estado = 2, 1, 0))
validado, SUM(IF(estado = 3, 1, 0)) cancelado FROM top GROUP BY autor');
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $autor) {
echo "{$autor['autor']} tiene {$autor['esperando']} esperando, {$autor['validado']} validado,
{$autor['cancelado']} cancelado.<br />";
}
} catch(PDOException $e) {
echo $e->getMessage();
}