Ankündigung

Einklappen
Keine Ankündigung bisher.

mysqli-query Fatal Error

Einklappen

Neue Werbung 2019

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

  • mysqli-query Fatal Error

    Hallo Community,

    mein SQL-Query verweist angeblich auf kein Objekt und deshalb wird die Abfrage nicht komplett ausgeführt.

    Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\us\classes\User.class.php on line 13
    PHP-Code:
    function register($username$password$pwcheck$mail) {
                global 
    $connect;
                
                if(
    User::validatePasswords($password$pwcheck)) {
                    if(
    User::validateMail($mail)) {
                        
    $sqlUsers    =    $connect->query("SELECT * FROM `users`");
                        if(
    $sqlUsers->num_rows() > 0) {
                            echo 
    "Dieser Benutzername wird bereits verwendet!";
                        } else {
                            
    $this->username    =    htmlspecialchars($_POST['username'], ENT_QUOTES);
                            
    $sqlUsers    =    $connect->query("SELECT `mail` FROM `users` WHERE `mail` = '$this->mail' LIMIT 1");
                            if(
    $sqlUsers->num_rows() > 0) {
                                echo 
    "Diese E-Mail-Adresse wird bereits verwendet.";
                            } else {
                                
    $ip    =    $_SERVER['REMOTE_ADDR'];
                                
                                
    $registerUser    =    $connect->query("INSERT INTO `users` (`username`, `password`, `mail`, `registerDate`, `ip`) VALUES ('$this->username', '$this->password', '$this->mail', time(), '$this->ip')");
                                if(
    $registerUser) {
                                    return 
    true;
                                }
                            }
                        }
                    }
                }
                
                return 
    false;
            } 
    Handelt sich dabei um "$sqlUsers = $connect->query [...]", die eigentliche Abfrage ist "SELECT `username` FROM `users` WHERE `username` = '$username' LIMIT 1" - dabei kam es zum gleichen Fehler.

    Durch das global $connect müsste doch eigentlich die Abfrage funktionieren, weiß' aber nicht woran das liegt.

    LG
    Rier


  • #2
    Da stimmt was mit $connect nicht, ein var_dump($connect); sollte für Klarheit sorgen.

    Außerdem ist
    PHP-Code:
     $sqlUsers    =    $connect->query("SELECT * FROM `users`"); 
                        if(
    $sqlUsers->num_rows() > 0) { 
                            echo 
    "Dieser Benutzername wird bereits verwendet!"
                        } 
    gewaltiger Blödsinn. Nur weil überhaupt was in der Tabelle steht, ist der Benutzername noch lange nicht vergeben. Und "Select *" ist bäh! Und globals sind auch nicht besser.
    Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

    Kommentar


    • #3
      Zitat von uha Beitrag anzeigen
      Da stimmt was mit $connect nicht, ein var_dump($connect); sollte für Klarheit sorgen.
      Ergebnis davon ist NULL.

      Zitat von uha Beitrag anzeigen
      Außerdem ist
      PHP-Code:
       $sqlUsers    =    $connect->query("SELECT * FROM `users`"); 
                          if(
      $sqlUsers->num_rows() > 0) { 
                              echo 
      "Dieser Benutzername wird bereits verwendet!"
                          } 
      gewaltiger Blödsinn. Nur weil überhaupt was in der Tabelle steht, ist der Benutzername noch lange nicht vergeben.
      Zitat von Rier Beitrag anzeigen
      die eigentliche Abfrage ist "SELECT `username` FROM `users` WHERE `username` = '$username' LIMIT 1"
      Zitat von uha Beitrag anzeigen
      Und "Select *" ist bäh! Und globals sind auch nicht besser.
      Was ist die Alternative zu globals?

      Kommentar


      • #4
        Zitat von Rier Beitrag anzeigen
        Ergebnis davon ist NULL.
        Also wurde $connect nirgendwo gesetzt
        Zitat von Rier Beitrag anzeigen
        Was ist die Alternative zu globals?
        Als Parameter der Funktion übergeben
        Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

        Kommentar

        Lädt...
        X