การใส่เครื่องหมายอัญประกาศให้กับตัวยึดตำแหน่งอัตโนมัติใน PDO ใน PHP

ในทางเทคนิคแล้ว PDO จะใส่เครื่องหมายอัญประกาศให้กับค่าทั้งหมดที่ผูกไว้ ถือว่าค่าเหล่านั้นเป็นสตริง แม้ว่าค่านั้นจะเป็นตัวเลขก็ตาม ซึ่งเป็นไปตามไวยากรณ์ SQL ดังนั้นจึงไม่จำเป็นต้อง ใส่เครื่องหมายอัญประกาศให้กับตัวยึดตำแหน่ง ถ้าคุณมี ค่าที่เป็นสตริง

ลองดูตัวอย่าง สมมติว่า ในตัวแปรของเรามีการเก็บสตริง:

php<?php
  $name = 'name1';
?>

ไม่จำเป็นต้องใส่เครื่องหมายอัญประกาศให้กับ ตัวยึดตำแหน่งแบบระบุตำแหน่งในกรณีนี้:

php<?php
  $sql = 'SELECT * FROM users WHERE name=?';
  $res = $pdo->prepare();
  $res->execute([$name]);
?>

ตัวยึดตำแหน่งแบบระบุชื่อก็ไม่จำเป็นต้อง ใส่เครื่องหมายอัญประกาศ:

php<?php
  $sql = 'SELECT * FROM users WHERE name=:name';
  $res = $pdo->prepare();
  $res->execute(['name' => $name]);
?>

ข้อเท็จจริงที่ว่าในคำสั่งค้นหาจะเป็นสตริงเสมอ บางครั้งก็อาจทำให้เกิดปัญหา กับไวยากรณ์ SQL ได้ - ในตำแหน่งที่ตามไวยากรณ์แล้ว จำเป็นต้องเป็นตัวเลข ในกรณีนี้สามารถใช้ วิธีการผูกพารามิเตอร์แบบอื่น ซึ่งเราจะพูดถึงในบทเรียนถัดไป