การใส่เครื่องหมายอัญประกาศให้กับตัวยึดตำแหน่งอัตโนมัติใน PDO ใน PHP
ในทางเทคนิคแล้ว PDO จะใส่เครื่องหมายอัญประกาศให้กับค่าทั้งหมดที่ผูกไว้ ถือว่าค่าเหล่านั้นเป็นสตริง แม้ว่าค่านั้นจะเป็นตัวเลขก็ตาม ซึ่งเป็นไปตามไวยากรณ์ SQL ดังนั้นจึงไม่จำเป็นต้อง ใส่เครื่องหมายอัญประกาศให้กับตัวยึดตำแหน่ง ถ้าคุณมี ค่าที่เป็นสตริง
ลองดูตัวอย่าง สมมติว่า ในตัวแปรของเรามีการเก็บสตริง:
<?php
$name = 'name1';
?>
ไม่จำเป็นต้องใส่เครื่องหมายอัญประกาศให้กับ ตัวยึดตำแหน่งแบบระบุตำแหน่งในกรณีนี้:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare();
$res->execute([$name]);
?>
ตัวยึดตำแหน่งแบบระบุชื่อก็ไม่จำเป็นต้อง ใส่เครื่องหมายอัญประกาศ:
<?php
$sql = 'SELECT * FROM users WHERE name=:name';
$res = $pdo->prepare();
$res->execute(['name' => $name]);
?>
ข้อเท็จจริงที่ว่าในคำสั่งค้นหาจะเป็นสตริงเสมอ บางครั้งก็อาจทำให้เกิดปัญหา กับไวยากรณ์ SQL ได้ - ในตำแหน่งที่ตามไวยากรณ์แล้ว จำเป็นต้องเป็นตัวเลข ในกรณีนี้สามารถใช้ วิธีการผูกพารามิเตอร์แบบอื่น ซึ่งเราจะพูดถึงในบทเรียนถัดไป