2016-10-11 8 views
0

をエコー列名はCOUNT(*)です。このクエリは3つのカウントされた値を返し、それらの値にPHP変数を代入します。 PHPコードの後に​​値を取得するために使用しました:カウントとPHPのために別の列に複数のMySQLの行の値を表示するには、私はmysqlデータベース内の複数のデータベース行をカウントして取得するには、次のMySQLステートメントを使用している

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 "";} 
?> 

しかし、このコードは単一の値を表示せずにエラーを投げます。これらの3つのmysqlカウントを3つのmysql変数に割り当てたいと思います。どうやってやるの?

+1

チュートリアル2をご覧ください。https://phpdelusions.net/pdo – RiggsFolly

+0

コメントありがとうございます! –

答えて

0

問合せでIFまたはCASE文を使用して1行戻すことを検討してください。

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'; 

これで3つのフィールドで1つの行が表示されます。

+0

これは結果に3つの列を追加しますが、列1にはデータが取り込まれない他の2つの列が挿入されます –

+0

MySQL ...その特質を理解した日...私は 'sum(if()うまくいけば、そのトリックを行います。 – JNevill

+0

コメントをお寄せいただきありがとうございます。 –

2

あなたがテーブル名を使用して行のCONTENSを参照すべきではありませんTHRの列の結果

SELECT COUNT(*) as my_count 
FROM leavesrecords 
WHERE leavetype IN ('Casual','Annual','Medical') and empno = '202' GROUP BY leavetype 

のエイリアスを使用し、キー

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

の別名を使用してカラムを参照する必要がありますが、適切な列名

+0

答えをありがとう!これは本当に助けます –

関連する問題