2017-05-26 15 views
-3

ログインをしたいが、エラーが表示され続ける。 SQLのSELECTフォームをチェックして同じことを試みますが、問題はまったく解決しません。誰かが私を助けてくれたらとてもいいです。データベースはすでに接続されており、すぐに使用できます。SQL SELECTコマンドの一般的な問題

これは誤りである:はmysql_num_rows()は、パラメータ1は、Cで指定されたリソース、boolean型であることを期待:ライン上の\ XAMPP \ htdocsに\ UNIWIXの\ login.php 14

これはコードである:

if(isset($_POST['submit'])){ 

    $email = mysql_escape_string($_POST['email']); 
    $password = mysql_escape_string($_POST['password']); 

    $sql = mysql_query("SELECT * FROM users WHERE email='$email' AND password = '$password' "); 


if(mysql_num_rows($sql) > 0){   (line 14) 

     echo "you are now logged in"; 
     exit(); 

    }else{ 

    echo 'wrong email or password'; 

} 


} 
+3

まず、MySQLi/PDOに変更する必要があるのは、償却された技術です(http://php.net/manual/en/mysqlinfo.api.choosing.php –

+0

を参照してください)。 SQLインジェクション参照:https://en.wikipedia.org/wiki/SQL_injection – UnkwnTech

+1

あなたがmysql_queryに接続していると言ったら、$ conオブジェクトを3回通してください – RohitS

答えて

0

クエリが失敗してmysql_queryがfalseを返す可能性があります。あなたが速いvar_dump($sql);を行13で行うなら、私はbool(false)のような応答を見ると思う。

+0

私は見るが、なぜそれが偽を返すのか?私のテーブルユーザーは存在し、「電子メール」と「パスワード」も存在します。早く答えてくれてありがとう。 –

0
"SELECT * FROM users WHERE email='$email' AND password = '$password' " 

$ emailと$ passwordはメインストリングの一部です。このSQLを実行しようとすると、おそらくいくらかのゴミが出るでしょう。

まず、値を一重引用符で囲み、文字列を二重引用符で止めて、ドットで連結する必要があります。だから、最後の文字列は次のようになります。

"SELECT * FROM users WHERE email = '".$email."' AND password = '".$password."'" 

だから、実際にはそれぞれの開始と終了をマーク「」との連結5弦、です。 PHPはMySQLに最後のものを渡さなければならないので、最後に "'"を付けないでください。

+0

PHPは二重引用符で囲まれた変数を置き換えます。 – UnkwnTech

+0

表示されるエラーは次のとおりです。データベースが選択されていません。私はデータベースをリンクしましたrequire( 'skull/go_db.php');ファイルでは、それは何もしません。 –

+0

データベースに接続してもよろしいですか? '$ conn = mysqli_connect($ servername、$ username、$ password);' このコードをechoしてfalseを返すと、データベースに接続できませんでした。 – kry

関連する問題