การผูกตัวแปรตามตำแหน่งใน PDO ใน PHP
คุณสามารถผูกตัวแปรกับคำสั่ง Query ได้ทีละตัว
ทำได้โดยใช้เมธอด bindValue
จากนั้นคำสั่ง Query ที่ได้จะถูกดำเนินการ แต่
ในกรณีนี้จะไม่ส่งอะไรเข้าไปใน execute
การผูกแบบนี้ช่วยให้ระบุประเภทของ ตัวแปรได้อย่างแม่นยำ ยกเลิกการล้อมด้วยเครื่องหมายอัญประกาศอัตโนมัติ สำหรับค่าตัวเลข มาดูกันว่าทำได้อย่างไร สมมติว่าเรามีตัวแปรสองตัว คือสตริงและตัวเลข:
<?php
$name = 'name1';
$age = 25;
?>
เตรียมคำสั่ง Query:
<?php
$sql = 'SELECT * FROM users WHERE name=? or age=?';
$res = $pdo->prepare($sql);
?>
ตอนนี้ให้ผูกตัวแปรกับคำสั่ง Query ด้วย
เมธอด bindValue
ในพารามิเตอร์แรกของเมธอดระบุ
หมายเลขตำแหน่งในคำสั่ง Query ในพารามิเตอร์ที่สอง
คือชื่อตัวแปร
และในพารามิเตอร์ที่สามระบุประเภทตัวแปร (ตัวเลข
หรือสตริง):
<?php
$res->bindValue(1, $name, PDO::PARAM_INT);
$res->bindValue(2, $age, PDO::PARAM_STR);
?>
ดำเนินการคำสั่ง Query:
<?php
$res->execute();
?>
มาดูผลลัพธ์:
<?php
while ($row = $res->fetch()) {
var_dump($row);
}
?>
กำหนดตัวแปร:
<?php
$name1 = 'name1';
$name2 = 'name2';
?>
รับผู้ใช้ที่มีชื่อตรงกัน กับค่าของตัวแปรตัวใดตัวหนึ่ง
กำหนดตัวแปร:
<?php
$age1 = 21;
$age2 = 22;
?>
รับผู้ใช้ที่มีอายุตรงกัน กับค่าของตัวแปรตัวใดตัวหนึ่ง