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