私はデータベースを検索するためにクエリを使用しようとしています。 LIKE検索クエリ。私が 'M'をタイプすると、Max、Matthewなどの名前が検索されます。しかし、実行されると、クエリは何も返されません。私はtry/catch関数ですべてを囲んでおり、使用できる整数をエコーして正しく動作しますが、コードが実際に行ったことを実際に行ったほうがはるかに好きです。私はこれを手にしながら、MySqliを使ってPDOに移行しようとしました。Android/php:PDOを使用して「LIKE」を使用した結果セットを取得し、JSONを解析する
誰かがこれに間違っていることが分かる場合は、躊躇しないでください。
サーバー側のスクリプトは以下の通りです:
はif(!empty($_POST['name'])){
$host =
$db =
$user =
$password =
$charset =
$dsn = 'mysql:host=localhost;dbname=dbname';
$opt = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
$pdo = new PDO($dsn,$user,$password,$opt);
$response = array();
$name = $_POST['name'];
$query = "SELECT user_id, name, email FROM users WHERE name LIKE ?";
try {
$stmt = $pdo->prepare("SELECT user_id, name, email FROM users WHERE name LIKE ?");
$stmt->execute([$name]);
$result = $stmt->fetch();
} catch (Exception $e) {
echo "99"; //Statement failed
}
if ($result !== false) {
foreach($result as $row) {
echo json_encode($row['user_id']);
echo json_encode($row['name']);
echo json_encode($row['email']);
}
} else {
echo '2'; //Empty result
}
$dsn = null;
} else {
echo "3"; //No search entry
}
AndroidStudioから関連するコードは次のとおりです。私は実際にアプリに渡されたいくつかの有用なデータを得ることができたら
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
final String name = searchInput.getText().toString();
Response.Listener<String> responseListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
System.out.println(response);
System.out.println(name);
if(response != null) {
System.out.println("Statement executed");
} else if (Integer.parseInt(response) == 2) {
System.out.println("Statement executed, but result invalid");
Toast.makeText(getApplicationContext(), "No results found", Toast.LENGTH_SHORT).show();
} else if (Integer.parseInt(response) == 3) {
System.out.println("Search field empty");
Toast.makeText(getApplicationContext(), "No search entry", Toast.LENGTH_SHORT).show();
} else if (Integer.parseInt(response) == 99) {
System.out.println("Failed to execute");
Toast.makeText(getApplicationContext(), "Statement failure", Toast.LENGTH_SHORT).show();
} else {
JSONArray jsonResponse = new JSONArray(response);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
};
PopupContactRequest AddContactRequest = new PopupContactRequest(name, responseListener);
RequestQueue queue = Volley.newRequestQueue(PopupAddContact.this);
queue.add(AddContactRequest);
}
、私は」ユーザーが適切な人を選択できるように、検索提案型のリストビューにそれを設定するのが好きです。誰もがこれを行う方法を知っている場合、私はこれで得ることができるすべてのヘルプが必要なので、コメントやメッセージとして私を追加すること自由に感じる!
乾杯、 J
これはうまくいった、あなたは伝説です、ありがとう! – JSteward