bindParam และ bindValue ทั้งคู่เป็นฟังก์ชันในตัวของ PHP ที่ใช้สำหรับเข้าถึงระเบียนฐานข้อมูลโดยการแมปตัวแปรไปยังค่าในคำสั่ง PHP Data Objects (PDOStatement) ซึ่งเป็นเลเยอร์นามธรรมสำหรับคำสั่งฐานข้อมูล
ความแตกต่างสำคัญระหว่าง bindParam และ bindValue มีดังนี้:
| ลำดับ | หัวข้อ | ฟังก์ชัน bindParam | ฟังก์ชัน bindValue |
|---|---|---|---|
| 1 | นิยาม | bindParam เป็นฟังก์ชันในตัวของ PHP ใช้เพื่อผูกพารามิเตอร์กับชื่อตัวแปรที่ระบุในคำสั่ง SQL เพื่อเข้าถึงระเบียนฐานข้อมูล | bindValue เป็นฟังก์ชันในตัวของ PHP ใช้เพื่อผูกค่าของพารามิเตอร์กับชื่อตัวแปรที่ระบุในคำสั่ง SQL |
| 2 | การดำเนินการ | ฟังก์ชัน bindParam ทำงานเฉพาะตอนที่คำสั่งถูกดำเนินการ เช่น $stmt->bindParam(':variableName', $parameter); ถูกเรียก | ในทางกลับกัน bindValue ถูกคอมไพล์และกำหนดค่าในตอนที่ประกาศ เช่น $stmt->execute(); |
| 3 | ค่าที่เข้าถึง | ตามที่กล่าวมา bindParam ทำงานตอนรันคำสั่ง ดังนั้นค่าล่าสุดที่แมปกับพารามิเตอร์จะถูกใช้โดยคำสั่ง | ในทางกลับกัน ในกรณีของ bindValue ค่าจะถูกกำหนดให้พารามิเตอร์ตอนที่ประกาศฟังก์ชันและถูกใช้โดยคำสั่ง |
| 4 | ประเภท | ตามที่กล่าวมา ฟังก์ชัน bindParam เป็นประเภทการดำเนินการแบบ runtime | ในทางกลับกัน ฟังก์ชัน bindValue เป็นประเภทการดำเนินการแบบ compiled |
| 5 | ค่าที่ปรับเปลี่ยน | ในกรณีของ bindParam การเปลี่ยนแปลงค่าพารามิเตอร์เป็นไปได้และจะถูกดำเนินการโดยคำสั่ง | ในทางกลับกัน ในกรณีของ bindValue การเปลี่ยนแปลงค่าพารามิเตอร์ไม่เป็นไปได้ และมีเพียงค่าเริ่มต้นเท่านั้นที่ถูกดำเนินการโดยคำสั่ง |