Nhiệm vụ bạn phải thực hiện là một câu lệnh được chuẩn bị sẵn với một số lượng trình giữ chỗ thay đổi. Điều này đơn giản hơn trong PDO, nhưng tôi sẽ chỉ cho bạn cách tiếp cận kiểu hướng đối tượng mysqli. Không có vấn đề gì, hãy luôn in một mảng được mã hóa json để tập lệnh nhận của bạn biết loại dữ liệu mong đợi.
Tôi đã có một đoạn mã bao gồm toàn bộ pin chẩn đoán và kiểm tra lỗi. Tôi chưa thử nghiệm tập lệnh này nhưng nó khá giống với bài đăng này của tôi .
if (empty($_POST['companyname']) || empty($_POST['username'])) { // perform any validations here before doing any other processing
exit(json_encode([]));
}
$config = ['localhost', 'root', '', 'dbname']; // your connection credentials or use an include file
$values = array_merge([$_POST['companyname']], explode(',', $_POST['username'])); // create 1-dim array of dynamic length
$count = sizeof($values);
$placeholders = implode(',', array_fill(0, $count - 1, '?')); // -1 because companyname placeholder is manually written into query
$param_types = str_repeat('s', $count);
if (!$conn = new mysqli(...$config)) {
exit(json_encode("MySQL Connection Error: <b>Check config values</b>")); // $conn->connect_error
}
if (!$stmt = $conn->prepare("SELECT user_scid, user_scid FROM linked_user WHERE company_name = ? AND username IN ({$placeholders})")) {
exit(json_encode("MySQL Query Syntax Error: <b>Failed to prepare query</b>")); // $conn->error
}
if (!$stmt->bind_param($param_types, ...$values)) {
exit(json_encode("MySQL Query Syntax Error: <b>Failed to bind placeholders and data</b>")); // $stmt->error;
}
if (!$stmt->execute()) {
exit(json_encode("MySQL Query Syntax Error: <b>Execution of prepared statement failed.</b>")); // $stmt->error;
}
if (!$result = $stmt->get_result()) {
exit(json_encode("MySQL Query Syntax Error: <b>Get Result failed.</b>")); // $stmt->error;
}
exit(json_encode($result->fetch_all(MYSQLI_ASSOC)));
Nếu bạn không muốn tất cả các điều kiện và nhận xét chẩn đoán đó bị phình ra, thì đây là phần tương đương xương trần sẽ hoạt động giống hệt nhau:
if (empty($_POST['companyname']) || empty($_POST['username'])) {
exit(json_encode([]));
}
$values = explode(',', $_POST['username']);
$values[] = $_POST['companyname'];
$count = count($values);
$placeholders = implode(',', array_fill(0, $count - 1, '?'));
$param_types = str_repeat('s', $count);
$conn = new mysqli('localhost', 'root', '', 'dbname');
$stmt = $conn->prepare("SELECT user_scid, user_scid FROM linked_user WHERE username IN ({$placeholders}) AND company_name = ?");
$stmt->bind_param($param_types, ...$values);
$stmt->execute();
$result = $stmt->get_result();
exit(json_encode($result->fetch_all(MYSQLI_ASSOC)));