gpt4 book ai didi

php - Android/php : Using PDO to retrieve a set of results using 'LIKE' , 并解析为 JSON

转载 作者:行者123 更新时间:2023-11-29 05:06:48 25 4
gpt4 key购买 nike

我正在尝试使用查询来搜索数据库,并从用户名LIKE 搜索查询的表中返回几列。即,如果我输入“M”,将检索 Max、Matthew 等姓名。但是,执行查询时不会返回任何内容。我用 try/catch 函数包围了它,它们工作正常,回显了一个我可以使用的整数,但我更希望代码实际完成了它的 Intent 。我花了很长时间来摆弄这个,首先尝试使用 MySqli,然后转向 PDO,因为网上的每个人都认为它更好。

如果有人能看出这里有什么问题,请不要犹豫,更正它!

服务器端脚本如下:

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

}

一旦我实际上可以将一些有用的数据传递给应用程序,我想用它填充一个搜索建议类型的 ListView ,以便用户可以选择要添加的合适的人。如果有人也知道如何做到这一点,请随时将其添加为评论或给我发消息,因为我需要我能得到的所有帮助!

干杯,J

最佳答案

你想要匹配字符串开头的数据,所以你必须在末尾附加 %

try {
$stmt = $pdo->prepare("SELECT user_id, name, email FROM users WHERE name LIKE ?");
$name = $name."%"; // add this line
$stmt->execute([$name]);
$result = $stmt->fetch();
} catch (Exception $e) {
echo "99"; //Statement failed
}

关于php - Android/php : Using PDO to retrieve a set of results using 'LIKE' , 并解析为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46365414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com