2016-09-09 5 views
0

私のPHPファイルは、login.php、次のようになります。Android Volley私の返答が常にfalseに返されるのはなぜですか?

<?php 

//if($_SERVER['REQUEST_METHOD']=='POST'){ 
//$username = $_POST['username']; 
$username = "Dave"; 
require_once('dbConnect.php'); 
$sql = "SELECT * FROM user WHERE username = '$username'"; 
$result = mysqli_query($con,$sql); 
$check = mysqli_fetch_array($result); 
if(isset($check)){ 
     echo 'Logged in'; 
} else { 
     echo 'Could not log in'; 
} 
//} 

?> 

私はmyserver.com/login.phpに行くときデイブは私のデータベースにあるので、私は、Logged inを参照してください。私のAndroidアプリで

は、ボタンの私のバレーボールログは次のようになります。

private void userLogin() { 
     username = editTextUsername.getText().toString().trim(); 
//  password = editTextPassword.getText().toString().trim(); 

     StringRequest stringRequest = new StringRequest(Request.Method.POST, LOGIN_URL, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         if(response.trim().equals("Logged in")){ 
          Toast.makeText(LoginActivity.this,"yahoo, you're in",Toast.LENGTH_LONG).show(); 
          openProfile(); 
         }else{ 
           Toast.makeText(LoginActivity.this,"sorry, you're out",Toast.LENGTH_LONG).show(); 
//       Toast.makeText(LoginActivity.this,response,Toast.LENGTH_LONG).show(); 
         } 
        } 
       }, etc... etc... 

しかし、私はボタンで自分のログインをクリックしたときに、私のトーストは、常にsorry, you're outです。なぜなのかご存知ですか ?

+0

PHPファイルの先頭に 'error_reporting(E_ALL);'を追加し、トーストにカスタムメッセージを使用する代わりに 'response.trim()'の値を単にトーストする必要があります。 – MonkeyZeus

答えて

0

このため、次

$check = mysqli_fetch_array($result); 

関数は、配列(成功)またはブール偽(失敗)を返します。いずれにしても、$checkです。常にが設定されるため、isset($check)は常にtrueを返します。

あなたのロジックは、行が(またはクエリが失敗した)ありません意味

if ($check === false) { 

でなければなりません。

+0

あなたの助けてくれてありがとうが、if(isset($ check)){if($ check === false){が動かなかった。 – CHarris

関連する問題