Cả bindParam và bindValue đều là hàm tích hợp sẵn của PHP, được dùng để truy cập bản ghi cơ sở dữ liệu bằng cách ánh xạ biến với giá trị trong câu lệnh đối tượng dữ liệu PHP (PDOStatement) - lớp trừu tượng cho truy vấn cơ sở dữ liệu.
Dưới đây là các khác biệt quan trọng giữa bindParam và bindValue:
| STT | Tiêu chí | Hàm bindParam | Hàm bindValue |
|---|---|---|---|
| 1 | Định nghĩa | bindParam là hàm tích hợp PHP dùng để ràng buộc một tham số với tên biến được chỉ định trong câu lệnh SQL để truy cập bản ghi cơ sở dữ liệu. | bindValue là hàm tích hợp PHP dùng để ràng buộc giá trị của tham số với tên biến được chỉ định trong câu lệnh SQL. |
| 2 | Thời điểm thực thi | bindParam chỉ được thực thi khi câu lệnh được thực thi, tức là $stmt->bindParam(':tenBien', $thamSo) được gọi. | bindValue được biên dịch và gán giá trị tại thời điểm khai báo, tức là $stmt->execute(). |
| 3 | Giá trị được truy cập | Vì bindParam thực thi khi câu lệnh chạy, nên giá trị mới nhất được ánh xạ với tham số sẽ được câu lệnh sử dụng. | Trong trường hợp bindValue, giá trị được gán cho tham số tại thời điểm khai báo hàm và giá trị đó được câu lệnh sử dụng. |
| 4 | Loại thực thi | bindParam là loại thực thi tại runtime (thời gian chạy). | bindValue là loại thực thi tại compile time (thời gian biên dịch). |
| 5 | Giá trị sửa đổi | Với bindParam, việc sửa đổi giá trị tham số là có thể và sẽ được thực thi bởi câu lệnh. | Với bindValue, không thể sửa đổi giá trị tham số, chỉ giá trị ban đầu được thực thi bởi câu lệnh. |