sql >> Databasteknik >  >> RDS >> Mysql

PHP isset() med flera parametrar

Parametrarna till isset() måste vara en variabelreferens och inte ett uttryck (i ditt fall en sammanlänkning); men du kan gruppera flera villkor så här:

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

Detta returnerar true bara om alla argument till isset() är inställda och innehåller inte null .

Observera att isset($var) och isset($var) == true har samma effekt, så det senare är något överflödigt.

Uppdatera

Den andra delen av ditt uttryck använder empty() så här:

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

Detta är fel av samma skäl som ovan. Faktum är att du inte behöver empty() här, för vid den tiden skulle du redan ha kontrollerat om variablerna är inställda, så du kan genväga hela uttrycket så här:

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

Eller med ett motsvarande uttryck:

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

Sluta tankar

Du bör överväga att använda filter funktioner för att hantera ingångarna:

$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

Btw, du kan anpassa dina filter för att leta efter olika delar av de inskickade värdena.



  1. MySQL GROUP BY och fyll tomma rader

  2. Använda ett if-villkor i en insatt SQL Server

  3. Problemet med förlorad uppdatering i samtidiga transaktioner

  4. SQL-fråga för att hitta primärnyckeln för en tabell?