1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Abfrage DB klappt, in PHP ist das Ergebnis leer

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von norbert_pdm, 19 September 2019.

  1. norbert_pdm

    norbert_pdm Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    ... dann ist das aber ein PHP-Problem und hier OffTopic.
     
  3. norbert_pdm

    norbert_pdm Benutzer

    Ok... Hab auch schon ein PHP -Forum gefunden, wo mir sicher geholfen wird... ;-)

    Danke für deine Antwort.

    Und kann man den Thread löschen?

    VG
     
  4. norbert_pdm

    norbert_pdm Benutzer

    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
     
  5. norbert_pdm

    norbert_pdm Benutzer

    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.
     
  6. Dravion

    Dravion Aktiver Benutzer

    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.
     
  7. norbert_pdm

    norbert_pdm Benutzer

    Vielen Dank für den Tipp!
    Kann man den auch mit Notepad++ nutzen? Ich hab immer nur was für Eclipse gefunden...
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden