2017-01-06 4 views
-3

Warum gibt mysqli_num_rows Funktion immer falsch im folgenden Code zurück?Warum mysqli_num_rows immer false zurückgibt

<?php 
if($_POST['submit']){ 
    //to validate the email address 

    if(!$_POST['email']){ 
    $error.="<br/>Please enter your email"; 
    }else if(!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)){ 
    $error.="<br/>Please enter a valid email address"; 
    } 

    // To validate password 
    if(!$_POST['password']){ 
    $error.="<br/>Please enter a password"; 
    }else{ 
    if(strlen($_POST['password'])<8){ 
     $error.="<br/>Please enter a password with at least 8 characters"; 
    } 
    if(!preg_match('`[A-Z]`',$_POST['password'])){ 
     $error.="<br/>Please include at least one capital letter in your password"; 
    } 
    } 

    if($error){ 
    echo "There were error(s) in your sign up details".$error; 
    }else{ 

    $link=mysqli_connect("localhost","diary",""); 
    if(mysqli_connect_error()){ 
     die("there is an arror"); 
    } 

    //$query="insert into `users` (`email`,`number`) values ('[email protected]',123)"; 

    $email1=$_POST['email']; 

    // search for already registered emails 
    $query="select * from users where email='".mysqli_real_escape_string($link,$email1)."'"; 

    $result = mysqli_query($link, $query); 

    if (!$result){ 
     die(mysqli_error($link)); 
    } 

    // And here where errors comes. 
    $results = mysqli_num_rows($result); 

    if(!$results){ 
     echo "That email address is already registered"; 
    }else{ 
     echo "dont know"; 
    } 
    } 
} 
?> 

<form method=post> 
    <input type="email" name="email" id="email"/> 
    <input type="password" name="password" /> 
    <input type="submit" name="submit" value="Sign Up"> 
</form> 
+0

Gibt 'mysqli_num_rows'' 0' oder 'false' zurück? Verwenden Sie 'var_dump ($ results);', um zu überprüfen. –

+0

Nun, welche Nummer gibt es zurück? Was erwartest du, dass es zurückkommt? Warum erwartest du das? – David

+0

@David Ich benutze Lampe, um PHP-Skript auszuführen. Jedes Mal, wenn ich die Seite aktualisiere, tritt ein Fehler auf. "Warnung: mysqli_num_rows() erwartet, dass Parameter 1 mysqli_result, boolean in ~ diary.php in Zeile 29 ist". Stattdessen sollte es die 0 oder 1 gemäß den in der Datenbank vorhandenen Datensätzen zurückgeben. –

Antwort

0

Wenn dies nicht Ihr ganzes Skript ist, müssen Sie den Fehler auf einen Wert initialisieren, bevor Sie ihn verketten.

Zweitens kümmern Sie sich nicht darum, das Ergebnis Ihrer Abfrage zu überprüfen, bevor Sie es an mysqli_num_rows füttern. Sie sollten immer überprüfen Sie den Wert einer Abfrage vor dem Versuch, etwas anderes damit zu tun.

$query="select * from users where email='".mysqli_real_escape_string($link,$email1)."'"; 
$result = mysqli_query($link, $query) or die(mysqli_error($link)); 
if (!$result) { 
    // you should write this to an error log. don't show it to a user 
    $error = mysqli_error($link); 
    die("The query failed!"); 
} 

// And here where errors comes. 
$results = mysqli_num_rows($result); 
Verwandte Themen