Sử dụng đô la-dấu ngoặc kép thay vào đó:
select upsert( $unique_token$INSERT INTO zz(a, b) VALUES (66, 'ha$$hahaha')$unique_token$, $unique_token2$UPDATE zz SET a=66, b='hahahaha' WHERE a=66$unique_token2$ )
Mỗi kết thúc phải phù hợp với mỗi bắt đầu. Hai cặp không nhất thiết phải khác biệt, nhưng theo cách đó thì an toàn nhất.
Điều này vẫn để lại một cơ hội lý thuyết rằng báo giá đô la có thể được khớp bên trong chuỗi.
Nếu bạn đang tạo truy vấn bằng tay, chỉ cần kiểm tra $
trong chuỗi. Nếu bạn đang tạo truy vấn từ các biến, bạn có thể sử dụng quote_literal(querystring)
thay vào đó.
Ngoài ra còn có định dạng format()
chức năng.
Xem:
Bên cạnh:Tôi giả sử bạn biết rằng dạng SQL động này cực kỳ dễ bị tấn công bởi SQL injection? Bất kỳ thứ gì thuộc loại này chỉ nên được sử dụng rất riêng tư hoặc rất an toàn.