Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP isset() mit mehreren Parametern

Die Parameter für isset() muss eine Variablenreferenz und kein Ausdruck sein (in Ihrem Fall eine Verkettung); aber Sie können mehrere Bedingungen wie folgt gruppieren:

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

Dies gibt true zurück nur wenn alle Argumente für isset() gesetzt sind und nicht null enthalten .

Beachten Sie, dass isset($var) und isset($var) == true haben den gleichen Effekt, daher ist letzteres etwas überflüssig.

Aktualisieren

Der zweite Teil Ihres Ausdrucks verwendet empty() so:

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

Das ist aus den gleichen Gründen wie oben falsch. Tatsächlich brauchen Sie empty() nicht hier, denn zu diesem Zeitpunkt hätten Sie bereits überprüft, ob die Variablen gesetzt sind, sodass Sie den vollständigen Ausdruck folgendermaßen abkürzen können:

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

Oder verwenden Sie einen äquivalenten Ausdruck:

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

Abschließende Gedanken

Sie sollten die Verwendung von filter in Betracht ziehen Funktionen zur Verwaltung der Eingänge:

$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

Übrigens können Sie Ihre Filter anpassen, um nach verschiedenen Teilen der übermittelten Werte zu suchen.