2016-04-24 20 views
-1

Ich habe Fehler von Thema im Skript unter:Warnung: mysqli_num_rows() erwartet genau 1 Parameter, 2 .... on line 14

<?php 
include("db.php"); 
if($_SERVER["REQUEST_METHOD"] == "POST") { 
    $email = mysqli_real_escape_string($link,$_POST['email']); 
    $password = mysqli_real_escape_string($link,$_POST['password']); 
    $gender = $_POST['gender']; 
    $password = md5($password); 
    if ($gender == female) { 
     $sql="SELECT id FROM female_users WHERE email='$email' AND password='$password'"; 
    } else { 
     $sql="SELECT id FROM male_users WHERE email='$email' AND password='$password'"; 
    } 
    $result=mysqli_query($link,$sql); 
    $count=mysqli_num_rows($link,$result); 

    if($count==1) { 
     echo('Hello'); 
    } else { 
     $error="Your Email or Password is invalid"; 
    } 
} 
mysqli_close($link); 
?> 

Ich bin nicht sicher, worum es geht. Ich habe versucht, wenn Aussage zu beseitigen, aber es gab mir keine Ergebnisse.

+2

'mysqli_num_rows()' NICHT DB-Verbindung als Parameter haben. RTFM http://php.net/manual/en/mysqli-result.num-rows.php –

+0

was ist mit $ link? – user3267302

+0

was ist damit? Das ist nur für DB-Verbindung und Abfrage. Oh, übrigens ... 'wenn ($ gender == weiblich)' das 'weibliche', wird hier als Konstante behandelt. und verwenden Sie MD5 nicht, wenn Sie live sind oder beabsichtigen, live zu gehen. –

Antwort

0

Versuchen

$count=mysqli_num_rows($result);  
+1

versuchen Sie versuchen versuchen ... das ist alles, was wir hier sehen. Nicht mein Downvote obwohl. edit: jetzt ist es verschwunden * lol * –

+1

Warum sollte das OP "das versuchen"? Eine ** gute Antwort ** wird immer eine Erklärung haben, was getan wurde und warum es so gemacht wurde, nicht nur für das OP, sondern für zukünftige Besucher von SO, die diese Frage finden und Ihre Antwort lesen können. – RiggsFolly

+1

oh und du hast etwas verpasst. Wenn Sie eine Antwort geben, erhalten Sie zumindest alle Fehler. –

2

Um hier die Fehler zu gehen:

$count=mysqli_num_rows($link,$result); 

Die mysqli_num_rows() Funktion Verbindung als Argument keine Datenbank nehmen, so entfernen $link, von dort.

Dann wird Ihr female in if ($gender == female) wird als Konstante http://php.net/manual/en/function.constant.php eher als eine Zeichenfolge http://php.net/manual/en/language.types.string.php behandelt:

if ($gender == 'female') 

und Fehlerberichterstattung würden Sie etwas über eine undefinierte Konstante weibliche geworfen beachten.

Jetzt MD5 wird nicht mehr als sicher zu mit speichern, verwendet werden Passwörter.

Verwenden eines der folgenden:

Andere Links:

Wichtige Nebenbemerkung über Säulenlänge:

Falls und wenn Sie Entscheiden Sie sich zu verwenden password_hash() oder das Kompatibilitätspaket (wenn PHP < 5.5) https://github.com/ircmaxell/password_compat/, es ist wichtig zu beachten, dass, wenn Ihre aktuelle Passwortspalte Länge ist weniger als 60, muss es auf diese (oder höher) geändert werden. Das Handbuch schlägt eine Länge von 255 vor.

Sie müssen die Spaltenlänge ändern und mit einem neuen Hash beginnen, damit es wirksam wird. Andernfalls wird MySQL im Hintergrund fehlschlagen.

0

Änderungszählwert Abfrage:

$result=mysqli_query($link,$sql); 
    $count=mysqli_num_rows($result); 
Verwandte Themen