Tôi phải chọn một số hàng từ cơ sở dữ liệu bằng cách sử dụng toán tử IN
. Tôi muốn làm điều đó bằng cách sử dụng tuyên bố chuẩn bị. Đây là mã của tôi:Các câu lệnh chuẩn bị MySQLi với toán tử IN
<?php
$lastnames = array('braun', 'piorkowski', 'mason', 'nash');
$in_statement = '"' . implode('", "', $lastnames) . '"'; //"braun", "piorkowski", "mason", "nash"
$data_res = $_DB->prepare('SELECT `id`, `name`, `age` FROM `users` WHERE `lastname` IN (?)');
$data_res->bind_param('s', $in_statement);
$data_res->execute();
$result = $data_res->get_result();
while ($data = $result->fetch_array(MYSQLI_ASSOC)) {
...
}
?>
Nhưng trả về không có gì mặc dù tất cả dữ liệu tồn tại trong cơ sở dữ liệu.
Và một điều nữa: nếu tôi vượt qua $in_statement
trực tiếp để truy vấn và thực thi nó, dữ liệu sẽ được trả lại. Vì vậy, vấn đề xuất hiện khi chuẩn bị.
Tôi đang tìm kiếm câu hỏi trong Google nhưng không thành công. Có gì sai với mã của tôi?
Cảm ơn sự giúp đỡ!
Bạn không thể sử dụng một tham số duy nhất cho mệnh đề IN của mình. Nó cần phải là: 'WHERE lastName IN (?,?,?,?)' – andrewsi
Được rồi, cảm ơn rất nhiều!) Có vẻ hơi cồng kềnh. – kpotehin