Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP isset() com vários parâmetros


O(s) parâmetro(s) para isset() deve ser uma referência de variável e não uma expressão (no seu caso uma concatenação); mas você pode agrupar várias condições assim:
if (isset($_POST['search_term'], $_POST['postcode'])) {
}

Isso retornará true somente se todos argumentos para isset() estão definidos e não contêm null .

Observe que isset($var) e isset($var) == true têm o mesmo efeito, então o último é um tanto redundante.

Atualizar

A segunda parte da sua expressão usa empty() assim:
empty ($_POST['search_term'] . $_POST['postcode']) == false

Isso está errado pelas mesmas razões acima. Na verdade, você não precisa de empty() aqui, porque a essa altura você já teria verificado se as variáveis ​​estão definidas, então você pode usar um atalho para a expressão completa assim:
isset($_POST['search_term'], $_POST['postcode']) && 
    $_POST['search_term'] && 
    $_POST['postcode']

Ou usando uma expressão equivalente:
!empty($_POST['search_term']) && !empty($_POST['postcode'])

Considerações finais

Você deve considerar o uso de filter funções para gerenciar as entradas:
$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

Aliás, você pode personalizar seus filtros para verificar várias partes dos valores enviados.