Tự động đặt trình giữ chỗ trong dấu ngoặc kép trong PDO trong PHP
Về mặt kỹ thuật, PDO bọc tất cả các giá trị được chèn trong dấu ngoặc kép, coi chúng là chuỗi, ngay cả khi thực tế chúng là số. Điều này được cho phép theo cú pháp SQL. Do đó, không cần phải bọc trình giữ chỗ trong dấu ngoặc kép nếu bạn có giá trị kiểu chuỗi.
Hãy xem xét một ví dụ. Giả sử một chuỗi được lưu trữ trong biến:
<?php
$name = 'name1';
?>
Trong trường hợp này, không cần phải bọc trình giữ chỗ theo vị trí thành một chuỗi:
<?php
$sql = 'SELECT * FROM users WHERE name=?';
$res = $pdo->prepare();
$res->execute([$name]);
?>
Trình giữ chỗ có tên cũng không cần được bọc trong chuỗi:
<?php
$sql = 'SELECT * FROM users WHERE name=:name';
$res = $pdo->prepare();
$res->execute(['name' => $name]);
?>
Tuy nhiên, việc trong truy vấn luôn là chuỗi đôi khi vẫn có thể dẫn đến vấn đề với cú pháp SQL - ở những nơi theo cú pháp bắt buộc phải là số. Trong trường hợp này, có thể sử dụng phương pháp ràng buộc tham số thay thế, mà chúng ta sẽ phân tích trong các bài học tiếp theo.