Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để đặt ORDER BY params sử dụng câu lệnh PDO đã chuẩn bị sẵn?

Có, bạn đang gặp khó khăn khi chèn nó trực tiếp trong SQL. Tất nhiên với một số biện pháp phòng ngừa. Mọi toán tử / số nhận dạng phải được mã hóa cứng trong tập lệnh của bạn, như thế này:

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

Tương tự cho hướng.

Tôi đã viết một chức năng trợ giúp danh sách trắng được sử dụng trong những trường hợp như vậy, nó làm giảm đáng kể số lượng mã cần phải viết:

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

Ý tưởng ở đây là kiểm tra giá trị và đưa ra lỗi trong trường hợp nó không đúng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách khắc phục sự cố trình xác định MySQL

  2. Số lượng bản ghi tối đa trong bảng cơ sở dữ liệu MySQL

  3. MySql Count không thể hiển thị giá trị 0

  4. Làm cách nào để nối nhiều bảng SQL bằng cách sử dụng ID?

  5. MySQL DELETE FROM với truy vấn con là điều kiện