sql >> Database teknologi >  >> RDS >> Mysql

Hvordan indstiller jeg ORDER BY-parametre ved hjælp af forberedt PDO-erklæring?

Ja, du sidder fast ved at indsætte det direkte i SQL. Med nogle forholdsregler, selvfølgelig. Hver operatør/identifikator skal være hårdkodet i dit script, sådan her:

$orders=array("name","price","qty");
$key=array_search($_GET['sort'],$orders);
$order=$orders[$key];
$query="SELECT * from table WHERE is_live = :is_live ORDER BY $order";

Det samme gælder retningen.

Jeg skrev en hvidlistehjælpefunktion skal bruges i sådanne tilfælde, reducerer det i høj grad mængden af ​​kode, der skal skrives:

$order = white_list($order, ["name","price","qty"], "Invalid field name");
$direction = white_list($direction, ["ASC","DESC"], "Invalid ORDER BY direction");

$sql = "SELECT field from table WHERE column = ? ORDER BY $order $direction";
$stmt = $db->prepare($sql);
$stmt->execute([$is_live]);

Ideen her er at tjekke værdien og rejse en fejl, hvis den ikke er korrekt.



  1. Syntaks for for-loop i SQL Server

  2. hvordan starter man en app med SQLite darabase på Android Studio emulator?

  3. Hvad er den mest effektive måde at kontrollere, om der findes en post i Oracle?

  4. Relation videregivet til #eller skal være strukturelt kompatibel. Inkompatible værdier:[:referencer]