Điều này phụ thuộc vào việc bạn muốn trả về các hàng trong đó tên hoặc thành phố khớp chính xác với các giá trị tìm kiếm (=
), hoặc các hàng có bất kỳ phần nào của tên hoặc thành phố khớp với các giá trị tìm kiếm (LIKE
).
Bất kể bạn cần cái nào, bạn có thể bắt đầu bằng cách chuyển đổi chuỗi tìm kiếm của mình thành một mảng chuỗi như sau:
$strings = array_map('trim', explode(',', $searchString));
array_map('trim'...
đảm bảo rằng bạn không cố gắng so khớp bất kỳ khoảng trắng nào trước hoặc sau dấu phẩy trong chuỗi tìm kiếm được phân tách bằng dấu phẩy của bạn.
Dưới đây là các ví dụ về cách thực hiện truy vấn của bạn bằng cách sử dụng các câu lệnh đã chuẩn bị sẵn trong PDO. Đầu tiên, kết hợp đầy đủ bằng cách sử dụng IN
:
$phs = rtrim(str_repeat('?,', count($strings)),',');
$stmt = $pdo->prepare("SELECT * FROM your_table WHERE name IN ($phs) OR city IN ($phs)");
// double the string values to us in both INs
$values = array_merge($strings, $strings);
$stmt->execute($values);
và đối sánh từng phần bằng cách sử dụng LIKE
:
$sql = '';
foreach ($strings as $string) {
$sql .= ' name LIKE ? OR city LIKE ? OR';
$values[] = $string;
$values[] = $string;
}
$stmt = $pdo->prepare('SELECT * FROM your_table WHERE' . rtrim($sql, ' OR'));
$stmt->execute($values);