Hãy xem xét đoạn mã sau:
$sql = "INSERT INTO airports (name) VALUES ('$name')";
Bây giờ, giả sử rằng $name
là "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"));