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

  • Rier
    hat ein Thema erstellt mysqli-query Fatal Error.

    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

  • uha
    antwortet
    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

    Einen Kommentar schreiben:


  • Rier
    antwortet
    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?

    Einen Kommentar schreiben:


  • uha
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X