Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbank - Prepared Statements Problem

Einklappen

Neue Werbung 2019

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

  • Datenbank - Prepared Statements Problem

    Hallo Community,
    ich habe ein Problem mit den Prepared Statements.
    Und zwar kommt immer dieser Fehler:
    Fatal error: Call to a member function bindParam() on boolean in C:\XAMPP\htdocs\WebsiteProgrammierung\datenbank\db _register.php on line 13

    Hier ein Paar Bilder von dem Code:
    (siehe Anhang)

    Vielen Dank im Vorraus
    Grüße Ablont

    Edit: Sorry bei dem 1. Bild fehlen Zeilennummern für den Fehler:
    include = Zeile 10;
    ...bindparam(':id',....) = Zeile 13
    Angehängte Dateien


  • #2
    Hallo!

    Bitte keine Bilder, sondern die Stellen des PHP-Codes posten.

    Fatal error: Call to a member function bindParam() on boolean in
    Vermutung: Die Verbindung oder die Query ist nicht erfolgreich und daher wird nur false (bool) zurückgegeben, auf das natürlich kein prepared Statment angewandt werden kann. Prüfe mal ob es Fehler gab etc...

    BTW: https://www.google.at/search?q=Call+...m()+on+boolean

    LG
    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Du kannst nicht einfach Methoden des PDO-Objektes (Bild1) unter MSQLi (Bild 2) laufen lassen!
      Du solltest dich für eine Schnittstelle entscheiden und konsequent dessen Mehoden benutzen.
      Mein Tipp: Nutze PDO.

      Wie hausl schon bemerkte:
      Poste Code hier im Forum, nutze dafür die PHP-Tags . Poste relevante Codeteile möglichst so, daß ein Helfer dein Problem unter einer anderen Umgebung reproduzieren kann.
      PHP-Klassen auf github

      Kommentar


      • #4
        Hallo Ablont,
        einen ähnlichen Fehler hatte ich anfangs auch. Hast du bei der Zuweisung der Variablen die korrekten Datentypen angegeben? Z.B. für Integer -> i oder für einen String ->s?

        Eine korrekte Eingabe sollte in etwa so aussehen:

        PHP-Code:
        $mysqlihandler = new mysqli("localhost""root""Passwort""Datenbankname")
        or die(
        "Verbindung zur Datenbank konnte nicht hergestellt werden");

        // prepare and bind
        $stmt1 $mysqlihandler->prepare("INSERT INTO tabellenspalte(userid, name, mail) VALUES (?, ?, ?)");
        $stmt1->bind_param("iss"$nummer$lastname$email);

        //das iss bezieht sich auf integer, string, string

        // set parameters and execute
        $nummer"12";
        $lastname "Doe";
        $email "test@mail.com";
        $stmt1->execute();

        $stmt1->close();
        $mysqlihandler->close(); 
        Mehr infos zur Verwendung von prepared-statements findest du hier:
        http://php.net/manual/de/mysqli.quic...statements.php
        Infos speziell zu mysqli findest du hier:
        http://php.net/manual/de/mysqli.prepare.php


        PS: Ich schließe mich bzgl. des Quellcodes meinen Vorrednern an

        Kommentar


        • #5
          PHP-Code:
          "INSERT INTO tabellenspalte(userid, , name, mail) VALUES (?, ?, ?)" 
          Beistrich zu viel
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Sorry, hatte den Code auf die schnelle angepasst und das Komma übersehen.
            Habe es aber jetzt oben korrigiert.

            Kommentar


            • #7
              Vielen Dank für eure Hilfe.
              Hab es jetzt mit PDO gemacht (was ich heute in der Schule auch gelernt habe ) und es funktioniert.
              Ich entschuldige mich für die Bilder, nächstes mal werde ich Code-Ausschnitte nehmen

              Kommentar

              Lädt...
              X