我有一个包含 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";
}
}
?>
这是我的堆栈跟踪的样子:
如何从我的 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/