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.

    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

        Kommentar

        Lädt...
        X