php - Android - 如何使用 PHP 搜索具有多个条件的 MySQL 数据库?

标签 php android mysql

我有一个包含 FIFA 足球运动员的数据库,我可以根据他们的名字从我的 Android 应用程序中搜索它。我也希望能够根据玩家评分进行搜索,但我做不到。

这就是我尝试从我的应用程序发送我拥有的两个条件(玩家名称和等级)的方式,而这是它不起作用的地方。如果我只有一个 Uri.builder() 和作为播放器名称的 searchQuery 变量,它就会工作。但是,当我尝试使用变量 minRating 添加另一个 Uri.builder() 时,它无法连接到数据库。

  // 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 应用程序中获取两个或多个搜索条件,将其发送到 PHP 文件并查询数据库?

最佳答案

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

关于php - Android - 如何使用 PHP 搜索具有多个条件的 MySQL 数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45586566/

相关文章:

php - 使用引号从php数组创建WHERE IN()子句

javascript - 在循环中获取值,发送到另一个页面并使用该值调用捕获数据

javascript - php 函数不将值返回给 javascript 变量

java - 如何在 JSP(java) 中实现 PHP file_get_contents() 函数?

android - 获取数据库检查器 : Error reading Sqlite database. 在 Android Studio 中找不到数据库

android - 当应用程序在后台运行时,WhatsApp 就像来电通知一样

php - 在类中重用方法

php - 为 wordpress 主题创建 Bootstrap 导航栏

Android Mapbox SDK v10 : attribution position; UiSettings

php - 来自用户帐户数据库的自动电子邮件