? trong truy vấn SQL được gọi là:🎯 Positional Parameters
hay tiếng Việt là Tham số theo vị trí.
Positional Parameters là các tham số trong câu lệnh SQL được đánh dấu bằng ký hiệu ?, và được gán giá trị theo thứ tự xuất hiện.
Vì khi bạn viết SQL như:
SELECT * FROM users WHERE status = ? AND age > ?;
Thì khi thực thi, bạn không đặt tên tham số, mà truyền giá trị theo vị trí:
$this->db->query("SELECT * FROM users WHERE status = ? AND age > ?", ['active', 18]);
? đầu tiên = 'active'? thứ hai = 18→ Lập trình viên phải nhớ đúng thứ tự tham số trong truy vấn.
:param)| Đặc điểm | Positional Parameters (?) | Named Parameters (:param) |
|---|---|---|
| Ký hiệu | ? | :status, :age, ... |
| Gán giá trị | Theo thứ tự ([val1, val2]) | Theo tên (['status' => 'active']) |
| Độ phổ biến | Rất phổ biến trong JDBC, PDO, CI3 | Phổ biến trong Laravel, Hibernate, SQLAlchemy |
| Ưu điểm | Đơn giản, nhẹ | Dễ đọc, dễ bảo trì |
| Nhược điểm | Dễ nhầm nếu có nhiều ? | Cần parser hoặc thư viện hỗ trợ |
| Ngôn ngữ / Tool | Tên gọi | Ghi chú |
|---|---|---|
| PHP PDO / CI3 | Positional Parameters | Dùng ? |
| Java JDBC | Positional Parameters | Chỉ hỗ trợ ? |
| Python sqlite3 | Positional or Named | Dùng được cả hai |
| MySQL client | Không hỗ trợ trực tiếp | Chỉ hỗ trợ literal |
| SQL chuẩn (ANSI) | Không định nghĩa | Đây là tính năng của layer lập trình |
? trong SQL được gọi là positional parameter (tham số vị trí).