Abfrage DB klappt, in PHP ist das Ergebnis leer

norbert_pdm

Aktiver Benutzer
Beiträge
25
Hallo, hallo ...

Ich hab eine Frage, die eher in Richtung PHP geht, aber hier vielleicht auch beantwortet werden kann....
Ich habe in einer Datenbank (zz) eine Tabelle names 'tbl_kinder' und eine names 'tbl_mitarbeiter'.
Beide hängen über eine Foreign key zusammen.

Folgende Abfrage klappt in phpMyAdmin problemlos:
Code:
SELECT
    CONCAT (tbl_ma_name, ', ', tbl_ma_vorname) AS Mitarbeiter,
    CONCAT (tbl_kinder_name, ', ', tbl_kinder_vorname) AS Klient,
    IF(tbl_kinder_kostueber IS NULL, "X", DATE_FORMAT(tbl_kinder_kostueber, '%d.%m.%Y')) AS Kostenübernahme,
    IF(tbl_kinder_hilfeplan IS NULL, "X", DATE_FORMAT(tbl_kinder_hilfeplan, '%d.%m.%Y')) AS Hilfeplan   
FROM
    tbl_kinder NATURAL JOIN tbl_mitarbeiter
WHERE
    tbl_kinder_kostueber > curdate() OR tbl_kinder_kostueber IS NULL
    AND
    tbl_kinder_hilfeplan > curdate() OR tbl_kinder_hilfeplan IS NULL
ORDER BY Mitarbeiter ASC, Klient ASC

Wenn ich das ganze jedoch in PHP einbaue, bekomme ich ein leeres Ergebnis. Oder genauer: num_rows liefert entweder Null oder einen Fehler....
Das PHP - Script:
Code:
            <?php
            $query_hilfe = "SELECT
                                CONCAT (tbl_ma_name, ', ', tbl_ma_vorname) AS Mitarbeiter,
                                CONCAT (tbl_kinder_name, ', ', tbl_kinder_vorname) AS Klient,
                                IF(tbl_kinder_kostueber IS NULL, \"X\", DATE_FORMAT(tbl_kinder_kostueber, '%d.%m.%Y')) AS Kostenübernahme,
                                IF(tbl_kinder_hilfeplan IS NULL, \"X\", DATE_FORMAT(tbl_kinder_hilfeplan, '%d.%m.%Y')) AS Hilfeplan   
                            FROM
                                tbl_kinder NATURAL JOIN tbl_mitarbeiter
                            WHERE
                                tbl_kinder_kostueber > curdate() OR tbl_kinder_kostueber IS NULL
                                AND
                                tbl_kinder_hilfeplan > curdate() OR tbl_kinder_hilfeplan IS NULL
                            ORDER BY Mitarbeiter ASC, Klient ASC";
            // Verbindung zur Datenbank
            $mysqli = new mysqli("localhost", "root", "GanzGeheim", "zz");
            // Teste, ob Verbindung ok
            if(mysqli_connect_errno()) {
                echo "<p>Sorry, no Connection!", mysqli_connect_error(), "</p>\r\n";
                exit();
            }
            // Verbindung nutzen
            if($result_hilfe = $mysqli->query($query_hilfe)) {
                echo "<h4>Anzahl: ", $result_hilfe->num_rows, "</h4><br /><br />\r\n";
                while($row = $result_hilfe->fetch_array()) {
                    printf("<ul>\r\n");
                    printf("<li> %s </li>\r\n", htmlentities($row["Mitarbiter"]));   
                    printf("</ul>\r\n");
                }
                // Inhalt von result_ueber frei geben
                $result_hilfe->close();
            }
            $mysqli->close();
            ?>

Hat jemand eine Idee, was das falsch ist?

Ich danke euch sehr für eure Hilfe!

VG, Norbert
 
Werbung:
Oh Man... Vor den Kopf schlag...

Die Syntax im Query ist völlig ok....
Ich hab die ganze Zeit an der falschen Datei rumprobiert... :mad::mad:

ABER: Ich erhalte keine Ausgabe...
Wenn ich den Code so ändere, dass er auch einen Fehler schmeißt, gibt es einen 'Fehler' ...

Code:
            $result_hilfe = $mysqli->query($query_hilfe);
            echo "Ergebnis: ", $result_hilfe;
            if($result_hilfe = $mysqli->query($query_hilfe)) {
                echo "<h4>Anzahl Kostenübernahme: ", $result_hilfe->num_rows, "</h4><br /><br />\r\n";
                // Inhalt von result_ueber frei geben
                $result_hilfe->close();
            } else {
                echo "Fehler";
            }

Was stimmt an dieser Abfrage so nicht? Offensichtlich ist $result_hilfe leer...
Wie gesagt, wenn ich sie in phpMyAdmin laufen lasse, klappt es problemlos.
Ich hab sie woanders ähnlich laufen, da klappt es... :-(
Hast du da eine Idee?

VG, Norbert
 
Ich weiß bis heute nicht genau, warum...
Aber nach dem ich die SQL - Abfrage per Hand noch einmal geschrieben habe, klappt es einfach.

Also wird sich blöderweise irgend ein Steuerzeichen oder sonst was versteckt haben...

Thema gelöst.
 
Bei sowas hilft XDebug ganz gut.
Einfach einen Breakpoint vor und nach dem zu untersuchenden Code einfügen
und absteppen, dann siehst Du genau wo das Problem liegt.
 
Werbung:
Zurück
Oben