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

html<複数を選択=複数>+SQLクエリ検索

    ここでの(そして他の答えの)問題は、in 句は引用符で囲まれているため、希望する結果が得られません。配列をクエリに効果的に渡す必要があります。また、コードはSQLインジェクションに対して脆弱です 。 PDO/プリペアドステートメントに移行することを強くお勧めします。 わずかを追加しました 国々を保護しますが、それは決して絶対確実ではありません。

    function prepareForSql($value, $key) {
        return addslashes($value);
    }
    
    array_walk($_POST["chkUnr"], "prepareForSql");
    $search_country = "'" . implode("','", $_POST["chkUnr"]) . "'";
    
    $query = "";
    $query .= "SELECT users.* FROM users";
    if (isset($_POST['singles_online']) ? $_POST['singles_online'] : 0 == 1) {
        $query .= " LEFT JOIN online ON online.user_id = users.id";
    }
    $query .= " WHERE";
    if (isset($_POST['vip']) ? $_POST['vip'] : 0 == 1) {
        $query .= " users.vip = 1 AND";
    }
    if (isset($_POST['profile_image']) ? $_POST['profile_image'] : 0 == 2) {
        $query .= " users.profile_image = '2' AND";
    }
    if (isset($_POST['singles_online']) ? $_POST['singles_online'] : 0 == 1) {
        $query .= " online.is_online = 1 AND";
    }
    $query .= " (id NOT IN (SELECT user_id FROM users_blocked WHERE blocked_id = '$user_id')) AND";
    
    $query .= " (users.user_age >= '$age_from' AND users.user_age <= '$age_to') AND";
    $query .= " (users.gender = '$gender_search') AND";
    
    $query .= " users.country IN ($search_country)";
    
    $search_query = mysql_query($query);
    


    1. SQLServerインデックスの破損を修復するための無料の方法

    2. MacOSにXAMPPをインストールした後にMySQLサーバーに接続する方法

    3. MySQLエラーコード:1193。不明なシステム変数

    4. SQLServerの単一行MERGE/upsertの構文