2016-10-11 2 views
0

Ich habe folgende mysql-Anweisung zählen und mehrere Datenbank-Zeilen in MySQL-Datenbank abrufen:Count und mehrere mysql Zeilenwerte in verschiedenen Spalten für PHP anzeigen echo

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

Aber die Ausgabe dieser Abfrage enthält nur eine Spalte und der Spaltenname ist COUNT(*). Diese Abfrage gibt drei gezählte Werte zurück, und ich möchte, dass diese Werte PHP-Variablen zuweisen. folgenden PHP-Code verwendet, um Werte zu erhalten:

Aber dieser Code wirft mich einen Fehler, ohne einzelnen Wert zu zeigen. Ich möchte diese drei mysql-Zählungen drei mysql-Variablen zuweisen. wie kann ich das machen?

+1

Werfen Sie einen Blick auf ein Tutorial oder 2 https://phddelusions.net/pdo – RiggsFolly

+0

Danke für den Kommentar! –

Antwort

0

Verwenden Sie eine IF oder CASE -Anweisung in Ihrer Abfrage, um eine einzelne Zeile zurückzugeben:

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

Jetzt haben Sie eine Zeile mit drei Feldern.

+0

Das fügt dem Ergebnis drei Spalten hinzu, aber nur die erste Spalte ist gefüllt, die anderen zwei nicht aufgefüllten Spalten –

+0

MySQL ... Der Tag, an dem ich seine Idiosynkrasien verstehe ... Ich habe aktualisiert, um 'sum (if())' zu verwenden Hoffentlich macht das den Trick. – JNevill

+0

Danke für den Kommentar, aber nach dem Update gibt es Fehler ameise nicht zählen Werte !! –

2

Sie sollten

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

einen Alias ​​für thr Spalte Ergebnis verwenden und auf die Säule beziehen den Alias-Namen verwendet für Schlüssel

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

Sie sollten nicht auf die Zeilen contens beziehen sich die Tabellenname verwenden, aber Ein richtiger Spaltenname

+0

Danke für die Antwort !! das hilft wirklich –

Verwandte Themen