Để lưu chuỗi chứa dấu ngoặc kép " vào cột VARCHAR/TEXT, cần escape bằng dấu gạch chéo ngược \ bên trong chuỗi được bao bởi dấu nháy đơn '.
Cú pháp
INSERT INTO ten_bang VALUES ('\"GiaTriCoDauNgoacKep\"');
Ví dụ minh họa
Tạo bảng:
CREATE TABLE DemoTable (Name VARCHAR(20));
Chèn dữ liệu có dấu ngoặc kép:
INSERT INTO DemoTable VALUES ('\"John\"');
INSERT INTO DemoTable VALUES ('\"Chris\"');
INSERT INTO DemoTable VALUES ('\"Adam Smith\"');
INSERT INTO DemoTable VALUES ('\"Carol\"');
Kết quả khi SELECT
| Name |
|---|
| "John" |
| "Chris" |
| "Adam Smith" |
| "Carol" |
Các cách escape khác
- Trong chuỗi nháy đơn:
'\"text\"'(khuyên dùng) - Trong chuỗi nháy kép:
"\"text\""— escape bằng\" - Dùng
QUOTE():INSERT INTO t VALUES (QUOTE('text "with" quote'));— tự động escape an toàn. - Prepared Statement (parameterized query): Không cần escape thủ công — an toàn nhất chống SQL Injection.
Lưu ý quan trọng
Luôn dùng Prepared Statement khi chèn dữ liệu từ đầu vào người dùng (form web, API). Escape thủ công dễ bỏ sót và dẫn đến lỗ hổng bảo mật.
-- Ví dụ an toàn với Prepared Statement (PDO PHP)
$stmt = $pdo->prepare('INSERT INTO DemoTable (Name) VALUES (?)');
$stmt->execute(['John "The Great"']); -- Tự động xử lý quote