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

Làm thế nào để sử dụng danh sách trắng và các câu lệnh soạn sẵn với Postgresql trong php?

Danh sách trắng

Mã của bạn ở dạng hiện tại rất nguy hiểm, bạn không chỉ cho phép người dùng quyết định những trường nào nên được chọn mà bạn còn cho phép anh ta quyết định những bảng nào cần truy vấn. Bạn chắc chắn nên thực hiện kiểm tra danh sách trắng về những điều này. ví dụ:

if($_POST['tableSelected'] == 'acceptable_table1' || $_POST['tableSelected'] == 'acceptable_table2) {
    $table = $_POST['tableSelected']
}

Tương tự, bạn nên xác nhận danh sách trường. Nhưng xác thực danh sách trường sẽ khá phức tạp vì các trường của bạn sẽ phụ thuộc vào bảng. Tôi khuyên bạn nên tạo các mảng và kiểm tra xem vùng chọn có nằm trong đó không.

$table1_fields = array('col1','col2',...)
$table2_fields = array('col1','col2',...)

Tuyên bố chuẩn bị

Như bạn đã biết, các câu lệnh đã chuẩn bị chỉ có thể được sử dụng để ràng buộc các tham số. Chúng không thể được sử dụng để điền vào tên bảng và tên cột. Đó là lý do tại sao bạn cần cả bản kê khai chuẩn bị và danh sách trắng. Tôi khuyên bạn nên sử dụng PDO . Nó có thể trông giống như

$stmt = $dbh->prepare("SELECT {$fieldlist} FROM {$table} where field = ?");
$stmt->execute(array('somevalue'));



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tham gia hai bảng bằng cách sử dụng id và con cháu từ bảng giống cây

  2. Rails 4 / postgresql - chèn dữ liệu vào bảng dựa trên dữ liệu bảng khác (after_create)

  3. PostgreSQL - truy xuất các mục theo thứ tự chúng được lưu trữ

  4. PostgreSQL SHOW TABLES Tương đương (psql) 

  5. giá trị quá dài đối với ký tự loại thay đổi (100) ---- cơ sở dữ liệu được chuyển đổi gần đây, không thực hiện bất kỳ điều gì trong db