Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przeszukuj różne kolumny oddzielając je przecinkiem

Zależy to od tego, czy chcesz zwrócić wiersze, w których nazwa lub miasto dokładnie odpowiadają szukanym wartościom (= ) lub wiersze, w których dowolna część nazwy lub miasta dopasuj wartości wyszukiwania (LIKE ).

Niezależnie od tego, którego potrzebujesz, możesz zacząć od przekształcenia ciągu wyszukiwania w tablicę ciągów w następujący sposób:

$strings = array_map('trim', explode(',', $searchString));

array_map('trim'... zapewnia, że ​​nie próbujesz dopasować spacji przed lub po przecinkach w wyszukiwanym ciągu znaków oddzielonych przecinkami.

Oto przykłady, jak wykonać zapytanie za pomocą przygotowanych instrukcji w PDO. Najpierw pełne dopasowania przy użyciu 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);

i częściowe dopasowania przy użyciu 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. Wyszukiwanie pełnotekstowe Django MySQL

  2. Dodanie mysql_real_escape_string() powoduje przechowywanie pustych wartości w bazie danych

  3. Nie można połączyć się z bazą danych mysql?

  4. Błąd — próba uzyskania dostępu do metody „Y.get_Settings()” za pomocą metody „X.set_DbConnection(System.Data.Common.DbConnection)” nie powiodła się

  5. Pytanie PHP:Jak naprawić te instrukcje if/elseif?