sql >> データベース >  >> RDS >> Mysql

カンマで区切って別の列を検索する

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


    1. UTF8を使用したMySQLコマンドラインフォーマット

    2. mysqlはストアドプロシージャの外部でどのように宣言しますか?

    3. 並列計画の開始方法–パート5

    4. {}はPHPのMySQLクエリにどのように影響しますか?