Dette afhænger af, om du vil returnere rækker, hvor navn eller by matcher søgeværdierne nøjagtigt (=
), eller rækker hvor en hvilken som helst del af navn eller by matche søgeværdierne (LIKE
).
Uanset hvilken du har brug for, kan du starte med at konvertere din søgestreng til en række strenge som denne:
$strings = array_map('trim', explode(',', $searchString));
array_map('trim'...
sikrer, at du ikke forsøger at matche mellemrum før eller efter kommaerne i din kommaseparerede søgestreng.
Her er eksempler på, hvordan du udfører din forespørgsel ved hjælp af forberedte sætninger i PDO. Først fuld match ved hjælp af 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);
og delvise matcher ved hjælp af 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);