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

Pg_escape_string chính xác làm được gì?

Hãy xem xét đoạn mã sau:

$sql = "INSERT INTO airports (name) VALUES ('$name')";

Bây giờ, giả sử rằng $name"Chicago O'Hare" . Khi bạn thực hiện nội suy chuỗi, bạn nhận được mã SQL này:

INSERT INTO airports (name) VALUES ('Chicago O'Hare')

không rõ ràng, bởi vì dấu nháy đơn được hiểu là dấu ngoặc kép trong SQL và truy vấn của bạn sẽ bị lỗi.

Những điều tồi tệ hơn cũng có thể xảy ra. Trên thực tế, SQL injection đã được MITER xếp hạng # 1 Lỗi phần mềm nguy hiểm nhất năm 2011.

Nhưng dù sao thì bạn cũng không nên tạo các truy vấn SQL bằng cách sử dụng nội suy chuỗi. Thay vào đó, hãy sử dụng các truy vấn có tham số.

$sql = 'INSERT INTO airports (name) VALUES ($1)';
$result = pg_query_params($db, $sql, array("Chicago O'Hare"));


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tối ưu hóa truy vấn Postgres (buộc quét chỉ mục)

  2. CHỌN hoặc CHÈN trong một hàm có khuynh hướng gặp phải các điều kiện về chủng tộc không?

  3. Mẫu &Công cụ sửa đổi mẫu cho Định dạng số trong PostgreSQL

  4. Cách AT TIME ZONE hoạt động trong PostgreSQL

  5. PostgreSQL cách xem truy vấn nào đã chạy