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

Chèn biến $ hoặc giá trị $ _POST vào bảng mysql

Trong SQL, các giá trị chuỗi cần được trích dẫn:

VALUES ('value1', 'value2')"

Khi bạn sử dụng các biến:

VALUES ($var1, $var2)");

Chúng không được trích dẫn… trừ khi các dấu ngoặc kép nằm trong chính các giá trị.

Vì vậy, if $var1 = 'value1'; $var2 = 'value2' thì (sau khi các biến được nội suy trong chuỗi của bạn) SQL của bạn trông giống như sau:

VALUES (value1, value2)"

Bạn có thể giải quyết vấn đề ngay lập tức của mình bằng cách thêm dấu ngoặc kép:

VALUES ('$var1', '$var2')");

nhưng điều này không khắc phục được lỗ hổng bảo mật lớn của bạn và cho phép dữ liệu của bạn phá vỡ truy vấn theo những cách khác nhau.

Bạn nên tránh tạo câu lệnh SQL bằng cách lắp ráp các chuỗi từ các biến . Cách này dẫn đến lỗ hổng bảo mật SQL Injection. Sử dụng giao diện hỗ trợ đối số ràng buộc . Họ sẽ xử lý báo giá và thoát cho bạn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiểu việc sử dụng bộ nhớ của MySQL dẫn đến kết quả trong PHP (PDO)

  2. Truy vấn Mysqli với trạng thái biến SET (tức là nhiều truy vấn)

  3. Tạo LocalDate ngẫu nhiên với java.time

  4. Nhận các tham số dễ bị tấn công bởi SQL Injection - PHP

  5. Tại sao PHP PDO DSN lại là một định dạng khác cho MySQL so với PostgreSQL?