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.