これは、名前または都市が検索値と完全に一致する行を返すかどうかによって異なります(=
)、または名前または都市の任意の部分の行 検索値と一致します(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);