?
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í).