sql >> Database >  >> RDS >> Mysql

Als de mysql WHERE-component leeg is, retourneert u alle rijen

$randomvariable = ESACPE_MYSQL_STRING($_GET['randomvariable']);
$search =
    "SELECT * FROM objects " .
    (empty($randomvariable) ? "" : "WHERE transactiontype='$randomvariable' ") .
    "ORDER BY id DESC";

Waar ESCAPE_MYSQL_STRING is de relevante functie voor het ontsnappen van strings voor welk MySQL-stuurprogramma dan ook dat u gebruikt.

Een andere, meer modulaire manier:

$search = array(
    "select" => "SELECT * FROM objects",
    "where" => "WHERE transactiontype='$randomvariable'",
    "order" => "ORDER BY id DESC"
);

if (empty($randomvariable)) {
    unset($search["where"]);
}

$search = implode(' ', $search);

Het leuke hiervan is dat je de zoekopdracht voor elke situatie gemakkelijk kunt toevoegen, verwijderen of wijzigen, met gemakkelijke toegang tot elk deel van de zoekopdracht.

Je zou dit ook kunnen doen met CASE() in SQL, maar het is wat omslachtig en je moet ook geen goede prestaties verwachten:

SELECT * FROM objects
WHERE transactiontype LIKE
    CASE WHEN '$randomvariable' = '' THEN
        '%'
    ELSE
        '$randomvariable'
    END CASE
ORDER BY id DESC


  1. Laravel - Willekeurige records pagineren

  2. sqlplus hoe details van de momenteel verbonden databasesessie te vinden

  3. Query voor element van array in JSON-kolom

  4. PHP-uitvoering beperken?