2016-04-24 14 views
-1

ライン14上の1つのパラメータ、2 ....私は以下のスクリプトで話題のエラーを持っている:警告:mysqli_num_rows()が期待する正確

<?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); 
?> 

私はそれが何であるかはよく分かりません。私はif文を削除しようとしましたが、結果は出ませんでした。

+2

'mysqli_num_rows()'パラメータとしてDB接続を持っていません。 RTFM http://php.net/manual/en/mysqli-result.num-rows.php –

+0

$ linkはどうですか? – user3267302

+0

どうしますか?それはdb接続とクエリのためだけです。ああ、btw ... '女性($ gender == female)'という女性は、ここでは定数として扱われます。あなたが生きているか、生きていくつもりなら、MD5を使わないでください。 –

答えて

0

がここにエラーの上に移動するには

$count=mysqli_num_rows($result);  
+1

試してみてください...それはすべてここにあります。私のdownvoteではない。編集:今消えた*笑* –

+1

OPはなぜ "これを試してください"? **良い答え**は、何が行われたのか、そしてなぜそれがそのように行われたのかについての説明をいつも持っています。この質問を見つけて回答を読んでいるかもしれないので、OPのためだけでなく将来の訪問者のために 。 – RiggsFolly

+1

ああ、あなたは何かを逃した。あなたが答えを出そうとしているなら、少なくともすべてのエラーを取得してください。 –

2

をお試しください:

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

mysqli_num_rows()関数は、引数として、データベース接続を取るので、そこから$link,を削除しません。 if ($gender == female)

次に、あなたのfemaleは定数http://php.net/manual/en/function.constant.phpではなく、文字列http://php.net/manual/en/language.types.string.phpとして扱われます。

if ($gender == 'female') 

とエラー報告は、あなたに未定義の定数女性について何かを投げているだろう通知。

今MD5はもはやとパスワードを保存するために使用されるように安全と見なされていません。

使用次のいずれか:

その他のリンク(PHP < 5.5の場合):

列の長さに関する重要な追記:

もし、あなた使用することを決めるpassword_hash()または互換パック(PHP < 5の場合)。5)https://github.com/ircmaxell/password_compat/の場合、現在のパスワード列の長さが60未満の場合は、それ以上(またはそれ以上)に変更する必要があることに注意することが重要です。このマニュアルでは255の長さが推奨されています。

有効にするには、新しいハッシュを使用して列の長さを変更し、最初からやり直す必要があります。そうしないと、MySQLは自動的に失敗します。

0

変更カウントクエリに:

$result=mysqli_query($link,$sql); 
    $count=mysqli_num_rows($result); 
関連する問題