Pembungkusan Automatik Pemegang Tempat dalam Petikan dalam PDO di PHP
Secara teknikal, PDO membungkus semua nilai yang dimasukkan ke dalam petikan, menganggapnya sebagai rentetan, walaupun pada hakikatnya ia adalah nombor. Ini dibenarkan oleh sintaks SQL. Oleh itu, pemegang tempat tidak perlu dibungkus dalam petikan jika anda mempunyai nilai rentetan.
Mari kita lihat contoh. Katakan kita mempunyai rentetan yang disimpan dalam pembolehubah:
<?php
$name = 'name1';
?>
Pemegang tempat kedudukan tidak perlu dibungkus dalam rentetan dalam kes ini:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare();
$res->execute([$name]);
?>
Pemegang tempat bernama juga tidak perlu dibungkus dalam rentetan:
<?php
$sql = 'SELECT * FROM users WHERE name=:name';
$res = $pdo->prepare();
$res->execute(['name' => $name]);
?>
Fakta bahawa akan sentiasa ada rentetan dalam pertanyaan, kadang-kadang masih boleh menyebabkan masalah dengan sintaks SQL - di mana sintaks memerlukan nombor. Dalam kes ini, anda boleh menggunakan kaedah alternatif untuk mengikat parameter, yang akan kita bincangkan dalam pelajaran seterusnya.