PDO execute funktioniert nicht?

regex9  10.04.2023, 00:37

Ergänze eine konkrete Beschreibung des aktuellen Programmverhaltens.

DoGame5 
Beitragsersteller
 10.04.2023, 14:35

Wie oben erklärt ist dies ein register formular. Was soll man da großartig erklären. user gibt daten ein und registriert sich

1 Antwort

Hi,

Ein paar allgemeine Dinge, auf die Sie achten sollten, wenn Sie Probleme mit einem Execute-Befehl haben:

  • Überprüfen Sie, ob Sie eine Verbindung zur Datenbank hergestellt haben und ob Sie die korrekten Anmeldeinformationen angegeben haben.
  • Stellen Sie sicher, dass die Tabellennamen und die Spaltennamen korrekt sind und dass Sie die richtigen SQL-Anweisungen verwenden.
  • Verwenden Sie Prepared Statements, um SQL-Injektionsangriffe zu vermeiden.
  • Überprüfen Sie, ob Sie alle benötigten Parameter an das Execute-Befehlsobjekt übergeben haben.

Es sieht so aus, als ob es ein paar Tippfehler im Code gibt. Hier ist eine korrigierte Version:

  if (isset($_POST['submit'])) {
    $username = htmlspecialchars($_POST['username']);
    $password = htmlspecialchars($_POST['password']);


    $stat = $pdo->prepare("SELECT * FROM users WHERE username = :username");
    $stat->bindParam(":username", $username);
    $stat->execute();


    $result = $stat->fetch();
    if ($result) {
        $hash = password_hash($password, PASSWORD_DEFAULT);


        $test = $pdo->prepare("INSERT INTO users (username, pass) VALUES (:username, :pass)");
        $test->bindParam(":username", $username);
        $test->bindParam(":pass", $hash);


        $test->execute();


        $res = $test->fetch();
        if ($res) {
            echo "<script>alert('Nutzer wurde registriert');</script>";
        } else {
            echo "<script>alert('Nutzer wurde nicht registriert');</script>";
        }


    } else {
        echo "Bitte nutze einen anderen Nutzername";
    }
}
  • Die Klammern in den Zeilen 1 und 3 wurden korrigiert.
  • Die Anführungszeichen in den Zeilen 2 und 3 wurden korrigiert.
  • Die Leerzeichen in der Zeile 5 wurden korrigiert.
  • Die Groß- und Kleinschreibung in der Zeile 6 wurde korrigiert.
  • Das Binden der Parameter in den Zeilen 8 und 14 wurde korrigiert.
  • Die Zeile 16 wurde korrigiert, um das Passwort korrekt zu hashen.
  • Die Bedingung in der Zeile 20 wurde korrigiert.
  • Die Bedingungen in den Zeilen 24 und 27 wurden korrigiert.
  • Die Anführungszeichen in den Zeilen 25 und 28 wurden korrigiert.

DoGame5 
Beitragsersteller
 10.04.2023, 14:39

Wenn ich nach deinem Code gehe, würde der User in die Datenbank eingetragen werden wenn der Nutzername schon existiert. Wenn das nicht passieren soll, verneint man die if-Abfrage, das heißt man macht ein '!' davor. Somit wird der Nutzer nur in die Datenbank eingetragen wenn der Nutzername noch nicht existiert

0
DoGame5 
Beitragsersteller
 10.04.2023, 01:06

Alles klar. Der Code ist zwar gleich geblieben, du hast nur unnötige leerzeichen hinzugefügt. Und bei der result abfrage die Verneinung entfernt. Somit wird ein user erstellt wenn der nutzername schon existiert. Aber trz danke

1