Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mengatur params ORDER BY menggunakan pernyataan PDO yang disiapkan?

Ya, Anda terjebak memasukkannya langsung di SQL. Dengan beberapa tindakan pencegahan, tentu saja. Setiap operator/pengidentifikasi harus di-hardcode dalam skrip Anda, seperti ini:

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

Sama untuk arahnya.

Saya menulis fungsi pembantu daftar putih untuk digunakan dalam kasus seperti itu, sangat mengurangi jumlah kode yang perlu ditulis:

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

Idenya di sini adalah untuk memeriksa nilai dan meningkatkan kesalahan jika tidak benar.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat Diagram Basis Data Secara Otomatis MySQL

  2. SQL Group By dengan Order By

  3. Bandingkan hanya hari dan bulan dengan bidang tanggal di mysql

  4. MYSQL mengimpor data dari csv menggunakan LOAD DATA INFILE

  5. Pengelompokan ke dalam interval 5 menit dalam rentang waktu