Това зависи от това дали искате да върнете редове, където име или град съвпадат точно със стойностите за търсене (=
), или редове, където всяка част от името или града съответстват на стойностите за търсене (LIKE
).
Независимо от кой се нуждаете, можете да започнете, като преобразувате своя низ за търсене в масив от низове като този:
$strings = array_map('trim', explode(',', $searchString));
array_map('trim'...
). гарантира, че не се опитвате да съпоставите никакви интервали преди или след запетаите във вашия низ за търсене, разделен със запетая.
Ето примери за това как да изпълните заявката си, като използвате подготвени изрази в PDO. Първо, пълни съвпадения с помощта на 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);
и частични съвпадения с помощта на 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);