Esto depende de si desea devolver filas donde el nombre o la ciudad coincidan exactamente con los valores de búsqueda (=
), o filas donde cualquier parte del nombre o ciudad coincida con los valores de búsqueda (LIKE
).
Independientemente de cuál necesite, puede comenzar convirtiendo su cadena de búsqueda en una matriz de cadenas como esta:
$strings = array_map('trim', explode(',', $searchString));
El array_map('trim'...
asegura que no intente hacer coincidir ningún espacio antes o después de las comas en su cadena de búsqueda separada por comas.
Aquí hay ejemplos de cómo ejecutar su consulta usando declaraciones preparadas en PDO. Primero, coincidencias completas usando 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);
y coincidencias parciales usando 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);