Ich habe eine Tabelle namens "Vermutungen", die Menschen rät, ob ein Baby ein Junge oder ein Mädchen ist. Das sind die zwei möglichen Dinge in der „Sex“ Spalte (dh „Junge“ oder „Mädchen).Warum scheint COUNT (CASE WHEN ...) den vollständigen Abruf von MYSQL-Abfragen zu stoppen?
Es gibt 4 Vermutungen in der Tabelle für diesen PoolID. Also, wenn ich diesen Code unten laufen ...
$sql = "SELECT
FROM guesses
WHERE poolid = '$poolid'
ORDER BY $sort, createddate";
$getguesses = mysqli_query($connection, $sql);
if (!$getguesses) {
die("Database query failed: " . mysqli_error($connection));
} else {
//Get total number of guesses
$numguesses=mysqli_num_rows($getguesses);
echo "NUMGUESSES: $numguesses";
while ($row = mysqli_fetch_array($getguesses)) {
//code to grab other info about guesses, not relevant, works fine
}
}
Es gibt
NUMGUESSES: 4
Und auch 4 Zeilen ausspuckt (eine für jede Vermutung) mit anderen Informationen, die nicht relevant ist.
ich möchte die Gesamtzahl zählen von Mädchen Vermutungen vs Junge Vermutungen, f oder später in einem Kreisdiagramm verwenden. Also habe ich die folgende ...
$sql = "SELECT *, COUNT(CASE WHEN `sex` = 'girl' then 1 ELSE NULL END) as 'totalgirls', COUNT(CASE WHEN `sex` = 'boy' then 1 ELSE NULL END) as 'totalboys'
FROM guesses
WHERE poolid = '$poolid'
ORDER BY $sort, createddate";
$getguesses = mysqli_query($connection, $sql);
if (!$getguesses) {
die("Database query failed: " . mysqli_error($connection));
} else {
//Get total number of guesses
$numguesses=mysqli_num_rows($getguesses);
echo "NUMGUESSES: $numguesses";
while ($row = mysqli_fetch_array($getguesses)) {
echo "GIRLS:". $row['totalgirls'];
echo "BOYS:". $row['totalboys'];
//code to grab other info about guesses, not relevant
}
}
Diese gibt
NUMGUESSES: 1
GIRLS: 4
BOYS: 0
Und auch spuckt nur eine Linie (für nur eine der vier bestehenden Vermutungen)
Alle vier Vermutungen Mädchen , also sind die GIRLS total und die BOYS total korrekt. Aber warum sieht NUMGUESSES jetzt nur als 1? Es sollte 4 sein und sollte 4 Zeilen von Schätzungen zeigen.
Etwas mit dem COUNT() wirft etwas ab. Irgendwelche Ideen?
Danke, leider hat das nicht funktioniert, nur ausgegeben NUMGUESSES: 1, GIRLS: 4, BOYS: 4 und nur eine Zeile wieder – user3304303
Die Variable $ numguesses zählt die Anzahl der Zeilen in Ihrem Recordset, es wird immer 1 sein! Und da du ein COUNT spielst, wird nur eine Zeile erwartet ... was würden die anderen Zeilen enthalten? – Webomatik
Entschuldigung, ich verstehe nicht, warum Sie sagen, dass es immer 1 ist. Wenn Sie COUNT in einer Abfrage verwenden, sind die Ergebnisse immer 1 Zeile, egal was? Würde ich dann gezwungen sein, zwei separate SQL-Abfragen zu machen (1, die alle Informationen in so vielen Zeilen erhält, wie sie vorhanden sind, und 1, um die Zählung durchzuführen)? Ich dachte wirklich, du könntest sie beide in der gleichen Frage tun, aber ich muss mich irren. – user3304303