sql >> Database >  >> RDS >> Mysql

Zoek in verschillende kolommen door een komma te scheiden

Dit hangt ervan af of u rijen wilt retourneren waarvan de naam of plaats exact overeenkomt met de zoekwaarden (= ), of rijen waar een deel van naam of stad overeenkomen met de zoekwaarden (LIKE ).

Ongeacht welke u nodig heeft, u kunt beginnen door uw zoekreeks om te zetten in een reeks reeksen zoals deze:

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

De array_map('trim'... zorgt ervoor dat u geen spaties voor of na de komma's in uw door komma's gescheiden zoekreeks probeert te matchen.

Hier zijn voorbeelden voor het uitvoeren van uw query met behulp van voorbereide instructies in PDO. Eerst volledige overeenkomsten met 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);

en gedeeltelijke overeenkomsten met 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. Oracle installeren op een Mac

  2. Hoe UTC_TIMESTAMP() werkt in MariaDB

  3. Innerlijke samenvoeging van 2 tafels met dezelfde ID

  4. Afbeeldingsgegevens laden in BLOB-kolommen in Oracle