sql >> Databasteknik >  >> RDS >> Mysql

Sök i olika kolumner med ett kommatecken

Detta beror på om du vill returnera rader där namn eller stad matchar sökvärdena exakt (= ), eller rader där någon del av namn eller stad matcha sökvärdena (LIKE ).

Oavsett vilken du behöver kan du börja med att konvertera din söksträng till en rad strängar så här:

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

array_map('trim'... säkerställer att du inte försöker matcha några mellanslag före eller efter kommatecken i din kommaseparerade söksträng.

Här är exempel på hur du utför din fråga med förberedda satser i PDO. Först, fullständiga matchningar med 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);

och partiella matchningar med 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. SQL Data Control Language

  2. Lägg till en ny tabellkolumn till specifik ordningsposition i Microsoft SQL Server

  3. mysql left join sum two tabeller med rollup

  4. Hur man tar bort taggar i en tagg PHP XML MYSQL GCIDE samtidigt som man lämnar text