? trong truy vấn SQL được gọi là:

🎯 Positional Parameters
hay tiếng Việt là Tham số theo vị trí.


📌 Định nghĩa

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ì sao gọi là “positional”?

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.


✅ So sánh với Named Parameters (:param)

Đặc điểmPositional 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ếnRất phổ biến trong JDBC, PDO, CI3Phổ biến trong Laravel, Hibernate, SQLAlchemy
Ưu điểmĐơn giản, nhẹDễ đọc, dễ bảo trì
Nhược điểmDễ nhầm nếu có nhiều ?Cần parser hoặc thư viện hỗ trợ

📚 Gọi là gì trong từng ngôn ngữ?

Ngôn ngữ / ToolTên gọiGhi chú
PHP PDO / CI3Positional ParametersDùng ?
Java JDBCPositional ParametersChỉ hỗ trợ ?
Python sqlite3Positional or NamedDùng được cả hai
MySQL clientKhông hỗ trợ trực tiếpChỉ 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

🧠 Tóm lại

  • ? trong SQL được gọi là positional parameter (tham số vị trí).
  • Được hỗ trợ bởi hầu hết các driver SQL phổ biến, và bắt buộc phải truyền đúng thứ tự.