Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tìm kiếm các cột khác nhau bằng cách phân tách bằng dấu phẩy

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CHỌN ... CHO CẬP NHẬT luôn chứa ORDER BY?

  2. mysql:Chúng ta có thể tạo trình kích hoạt trên bảng hệ thống không?

  3. Sắp xếp mysql tùy chỉnh theo giá trị trường

  4. zsh:không tìm thấy lệnh:mysql

  5. Hết thời gian chờ truy vấn toàn cầu trong MySQL 5.6