Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak ustawić parametry ORDER BY za pomocą przygotowanej instrukcji PDO?

Tak, utknąłeś wstawiając go bezpośrednio do SQL. Oczywiście z pewnymi środkami ostrożności. Każdy operator/identyfikator musi być zakodowany na stałe w twoim skrypcie, na przykład:

$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";

To samo dla kierunku.

Napisałem funkcję pomocniczą białej listy do wykorzystania w takich przypadkach, znacznie zmniejsza ilość kodu, który należy napisać:

$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]);

Pomysł polega na tym, aby sprawdzić wartość i zgłosić błąd, jeśli nie jest poprawny.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd w MySQL podczas ustawiania domyślnej wartości DATE lub DATETIME

  2. Łącznik MySQL w języku Python — znaleziono nieprzeczytane wyniki podczas używania fetchone

  3. Zainstaluj MySQL na Ubuntu bez pytania o hasło

  4. Tabela aktualizacji MySQL na podstawie innej wartości tabeli

  5. Paginacja za pomocą MySQL LIMIT, OFFSET