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

複数のパラメーターを持つPHPisset()

    isset()へのパラメータ 式(この場合は連結)ではなく、変数参照である必要があります。ただし、次のように複数の条件をグループ化できます。

    if (isset($_POST['search_term'], $_POST['postcode'])) {
    }
    

    これにより、trueが返されます すべての場合のみ isset()への引数 設定されており、nullは含まれていません 。

    isset($var)に注意してください およびisset($var) == true 同じ効果があるので、後者はやや冗長です。

    更新

    式の2番目の部分では、empty()を使用します このように:

    empty ($_POST['search_term'] . $_POST['postcode']) == false
    

    これは上記と同じ理由で間違っています。実際、empty()は必要ありません ここでは、その時点で変数が設定されているかどうかをすでに確認しているので、次のように完全な式をショートカットできます。

    isset($_POST['search_term'], $_POST['postcode']) && 
        $_POST['search_term'] && 
        $_POST['postcode']
    

    または同等の式を使用する:

    !empty($_POST['search_term']) && !empty($_POST['postcode'])
    

    最終的な考え

    filterの使用を検討する必要があります 入力を管理する機能:

    $data = filter_input_array(INPUT_POST, array(
        'search_term' => array(
            'filter' => FILTER_UNSAFE_RAW,
            'flags' => FILTER_NULL_ON_FAILURE,
        ),
        'postcode' => array(
            'filter' => FILTER_UNSAFE_RAW,
            'flags' => FILTER_NULL_ON_FAILURE,
        ),
    ));
    
    if ($data === null || in_array(null, $data, true)) {
        // some fields are missing or their values didn't pass the filter
        die("You did something naughty");
    }
    
    // $data['search_term'] and $data['postcode'] contains the fields you want
    

    ところで、フィルターをカスタマイズして、送信された値のさまざまな部分をチェックできます。



    1. PHPを使用して複数のMYSQLクエリを実行する

    2. レコードが存在するかどうかを判断する最速の方法

    3. Oracle DBA Mentor

    4. Hibernate-ClassNotFoundException:com.mysql.jdbc.Driver