Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL Abfrage in Tabelle ausgeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SQL Abfrage in Tabelle ausgeben

    Hallo,

    ich möchte mir über mein Programm alle Nutzer aus der Datenbank ausgeben lassen deren Name wie der eingegebene ist.
    Hier meine ganze Datei:
    PHP-Code:
    <html>
    <head>
        <title>Reset</title>
        <script>
            table, th, td {
                border: 1px solid black;
            }
        </script>
    </head>
    <body>
    <table>
      <tr>
            <th>id</th>
            <th>Vorname</th>
            <th>Nachname</th>
            <th>Benutzername</th>
            <th>Passwort</th>
            <th>Reset</th>
        </tr>
    <?php
        action
    ();
        
    ?>
        </table>
    <?php
    function action() {
    session_start();
    $username $_POST["username"];
    $pdo = new PDO('mysql:host=localhost;dbname=hot-applauncher''root''');

    $sql $pdo->prepare("SELECT * FROM tbl_user WHERE username like :username");
    $result $sql->execute(array('username' => $username));
    $user $sql->fetch();
    if(isset(
    $user)) {
        while (
    $data $sql->fetchAll()) {
            echo 
    "<tr>";
                echo 
    "<td>" $data["id"] . "</td>";
                echo 
    "<td>" $data["firstname"] . "</td>";
                echo 
    "<td>" $data["lastname"] . "</td>";
                echo 
    "<td>" $data["username"] . "</td>";
                echo 
    "<td>" $data["password"] . "</td>";
                echo 
    "<td><a href='reset.php'><input type='button' value='Reset'></a></td>";
            echo 
    "</tr>";
        }
    echo 
    "</table>";
    } else {
        echo 
    "Fehler!";
    }
    }
    ?>
    </body>
    </html>
    Es wird keine Fehlermeldung ausgegeben oder sonstiges.
    Meine erste Frage ist wieso erhalte ich keine Daten in meine Tabelle?
    Meine zweite Frage ist wie ich die Fehler richtig abfangen kann? bringt dieses
    PHP-Code:
    if(isset($user)) 
    überhaupt etwas oder wird $user gar nie gesetzt und das ist auch der Grund warum ich keine Daten erhalte?

    Vielen Dank im Voraus für eure Hilfe

  • #2
    Um herauszufinden, ob und warum Du keine Daten erhältst, solltest Du als erstes mal die gebildete Query in phpMyAdmin ausführen, dort bekommst Du dann evtl. einen fehler oder brauchbare Daten.
    Bekommst Du Daten, geht es weiter, Dir anzeigen zu lassen, was sich bspw. in $user usw. tatsächlich befindet, dazu eignet sich var_dump() ganz gut.
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Datenbankabfragen haben inmitten der HTML-Ausgabe nichts verloren. Das gehört vor die Ausgabe.

      Verwende niemals SELECT *, sondern gibt im SELECT immer die Spalten an, die du im Ergebnis erwartest.

      Aktiviere das werfen von Fehlern bei PDO, ansonsten wirst du keine Fehlermeldungen bekommen:

      PHP-Code:
      $pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION); 
      $user ist immer gesetzt, sommit ist das isset() unnötig. Du solltest aber prüfen, ob $user einen Datensatz beinhaltet.

      Kommentar


      • #4
        ohne %-Zeichen wird Like zu = .... damit kriegst du im Normalfall exakt einen passenden Benutzer, aber nicht mehrere .. eher keinen ^^

        schau dich hier im Board um, es gibt regelmäßig Ratschläge, wie man eine Like-Suche mit PDO prepared Statements baut und trotzdem "unscharf" sucht
        "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

        Kommentar

        Lädt...
        X