Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP isset() avec plusieurs paramètres

Le(s) paramètre(s) de isset() doit être une référence de variable et non une expression (dans votre cas une concaténation) ; mais vous pouvez regrouper plusieurs conditions comme ceci :

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

Cela renverra true seulement si tous arguments de isset() sont définis et ne contiennent pas null .

Notez que isset($var) et isset($var) == true ont le même effet, donc ce dernier est quelque peu redondant.

Mettre à jour

La deuxième partie de votre expression utilise empty() comme ceci :

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

C'est faux pour les mêmes raisons que ci-dessus. En fait, vous n'avez pas besoin de empty() ici, car à ce moment-là, vous auriez déjà vérifié si les variables sont définies, vous pouvez donc raccourcir l'expression complète comme suit :

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

Ou en utilisant une expression équivalente :

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

Réflexions finales

Vous devriez envisager d'utiliser filter fonctions pour gérer les entrées :

$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

Au fait, vous pouvez personnaliser vos filtres pour vérifier différentes parties des valeurs soumises.