2017-08-09 25 views
1

私はFIFAのフットボール選手とデータベースを持っており、自分の名前に基づいてAndroidアプリケーションから検索することができます。私は選手の評価にも基づいてそれを検索することができるようにしたいが、私はそれを行うことはできません。Android - PHPを使用して複数の基準でMySQLデータベースを検索する方法は?

これは、私のアプリケーションから2つの基準(プレーヤーの名前と評価)を送信しようとする方法です。これは動作しません。これは、プレーヤーの名前であるsearchQuery変数を持つUri.builder()の1つを持っていれば動作します。しかし、別のUri.builder()に変数minRatingを追加しようとすると、データベースに接続できません。

// Setup HttpURLConnection class to send and receive data from PHP and MySQL 
      conn = (HttpURLConnection) url.openConnection(); 
      conn.setReadTimeout(READ_TIMEOUT); 
      conn.setConnectTimeout(CONNECTION_TIMEOUT); 
      conn.setRequestMethod("POST"); 

      // setDoInput and setDoOutput to true as we send and recieve data 
      conn.setDoInput(true); 
      conn.setDoOutput(true); 

      // add parameter to our above url 
      Uri.Builder builder = new Uri.Builder().appendQueryParameter("searchQuery", searchQuery); 
      String query = builder.build().getEncodedQuery(); 

      Uri.Builder builder2 = new Uri.Builder().appendQueryParameter("minRating", minRating); 
      String minRating = builder2.build().getEncodedQuery(); 

      OutputStream os = conn.getOutputStream(); 
      BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 
      writer.write(query); 
      writer.write(minRating); 
      writer.flush(); 
      writer.close(); 
      os.close(); 
      conn.connect(); 

これは私が私のPHPファイルでデータを受信して​​データベースを照会する方法である:

<?php 
include 'config.inc.php'; 

if(isset($_POST['searchQuery'])) 
{ 
     $search_query=$_POST['searchQuery']; 
     $min_rating=$_POST['minRating']; 

     $sql = "SELECT Name, Club_Position, Rating from spillere where Name LIKE '%$search_query%' 
       AND Rating > $min_rating"; 

     $statement = $conn->prepare($sql); 
    $statement->bindParam(':search_query',$search_query, PDO::PARAM_STR); 
     $statement->execute(); 
     if($statement->rowCount()) 
     { 
    $row_all = $statement->fetchall(PDO::FETCH_ASSOC); 
    header('Content-type: application/json'); 
    echo json_encode($row_all); 
     } 
     elseif(!$statement->rowCount()) 
     { 
    echo "no rows"; 
     } 
}  
?> 

これは私のスタックトレースは次のようになります。

どう

Image of stacktrace

Androidアプリケーションから2つ以上の検索基準を取得し、PHPファイルに送信してデータベースに問い合わせることはできますか?

+0

が、あなたはすでに二つのパラメータ 'searchQuery'と' minRating'を送信します。同じことをして、さらにパラメータを送信することができます。それとも正確に何をしたいですか? – Edwin

+1

@Edwinそれを明確にしてくれないのは残念です。私が送ることができる( 'searchQuery')両方のパラメータを送ることはできません。送信しようとすると( 'minRating')動作しません。だから私が( 'Uri.builder')を使う方法に何か間違いがなければなりません。 – Sumsar9000

答えて

1
Uri.Builder builder = new Uri.Builder().appendQueryParameter("searchQuery", searchQuery); 
String query = builder.build().getEncodedQuery(); 

Uri.Builder builder2 = new Uri.Builder().appendQueryParameter("minRating", minRating); 
String minRating = builder2.build().getEncodedQuery(); 

単一クエリパラメータにパラメータ上の両方を組み合わせる:

Uri.Builder builder = new Uri.Builder() 
      .appendQueryParameter("searchQuery", searchQuery) 
      .appendQueryParameter("minRating", minRating); 
String query = builder.build().getEncodedQuery(); 

//Now write query param to OutputStream 
OutputStream os = conn.getOutputStream(); 
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 
writer.write(query); 
+0

ありがとうございます!迷惑な問題への簡単な解決策:) – Sumsar9000

関連する問題