2016-10-10 4 views
-1

Ich erstelle eine register.php und ich bin jetzt in der Phase von Erstellen von "Benutzername und E-Mail Checking in Database" und irgendwie bekomme ich immer einen Fehler. Bitte helfen Sie mir, das zu beheben. DankWarnung: mysqli_num_rows() erwartet Parameter 1 als mysqli_result, boolean gegeben in C: xampp htdocs medcares index.php in Zeile 12

<?php 
    require_once('pages/connect.php'); 
    if (isset($_POST['username']) && isset($_POST['password'])){ 
    $username = mysqli_real_escape_string($connection, $_POST['username']); 
    $email = mysqli_real_escape_string($connection, $_POST['email']); 
    $password = md5($_POST['password']); 
    $repassword = md5($_POST['repassword']); 
    if ($password == $repassword) { 
     $fmsg = ""; 
     $usernamesql = "SELECT * FROM 'users' WHERE username='$username'"; 
     $usernameres = mysqli_query($connection,$usernamesql); 
     $count = mysqli_num_rows($usernameres); 
     if($count == 1){ 
      $fmsg .= "Username Already Exist!"; 
     } 

     $query = "INSERT INTO 'users' (username, password, email) VALUES ('$username', '$password', '$email')"; 
     $result = mysqli_query($connection, $query); 
     if($result){ 
      $smsg = "User Created Successfully."; 
     }else{ 
      $fmsg .= "Failed to Register User"; 
     } 
    } else { 
     $fmsg = "Password Do not Match"; 
    } 
} 
?> 

prüfe ich schon oft

$usernamesql = "SELECT * FROM 'users' WHERE username='$username'"; 

aber ich bekomme immer noch Fehlermeldungen. Bitte hilf mir. Danke für Ihre Hilfe.

Antwort

0

Dieses Problem wird unweigerlich von einer fehlgeschlagenen SQL-Anweisung verursacht, die zu einem falschen Rückgabewert führt. Dies sollte überprüft werden, um sicherzustellen, dass Sie es nicht als Rowset verwenden.

In diesem insbesondere Beispiel sollten Sie users (oder das Äquivalent mit Backticks, obwohl es in diesem Fall nicht erforderlich ist) verwenden, anstatt 'users'. Ersteres ist ein Datenbankobjekt, letzteres ist ein String-Literal.

Mit anderen Worten, ein von:

$usernamesql = "SELECT * FROM users WHERE username='$username'"; 
$usernamesql = "SELECT * FROM `users` WHERE username='$username'"; 
+0

Ich habe das schon gemacht, aber ich bekomme immer noch keine Nachricht "Benutzername existiert schon!". Ich bekomme nur eine Fehlermeldung "Fehler beim Registrieren des Benutzers" – Kirito

+0

@Kirito, das ist ein ganz anderes Thema, nichts mit Ihrem angegebenen Fehler im Titel der Frage zu tun. Ich schlage vor, dass Sie eine neue Frage stellen (nachdem Sie zuerst überprüft haben, dass der Benutzer noch nicht in der DB existiert). – paxdiablo

0

die Anführungszeichen in der Abfrage sind falsch.

$usernamesql = "SELECT * FROM 'users' WHERE username='$username'"; 

Die Anführungszeichen 'Benutzer' sollte ` Stil Anführungszeichen gesetzt werden.

if (!$usernameres) { 
    die(mysqli_error()); 
} 

Dies sollte direkt unter der Zeile gehen, wo Sie die mysqli_query tun:

Auch sollten Sie so etwas wie hinzufügen. Dadurch können Sie die tatsächliche Fehlermeldung sehen.

Verwandte Themen