Nó chỉ hữu ích với các dấu ngoặc kép nếu bạn thực hiện các câu lệnh chuẩn bị tham số hóa, nếu không, tất cả những gì bạn đang làm là nối chuỗi và phải tuân theo để định dạng đúng SQL của bạn.
Hãy thử một cái gì đó như:
$sql = "INSERT INTO anagrafiche SET
id_ndg = :protocol,
nick = :nick,
nome = :nome,
...
";
$params = array(
':protocol' => $protocol,
':nick' => $nick,
':nome' => $nome,
...
);
try{
$s = $pdo->prepare($sql);
$s->execute($params);
} catch (PDOException $e) {
...
}
Điều này cũng mang lại cho bạn lợi thế bổ sung là giảm thiểu các cuộc tấn công chèn SQL.
Nếu bạn muốn tiến thêm một bước và thực thi các kiểu dữ liệu, bạn có thể sử dụng bindValue()
hoặc bindParam()
như:
$sql = "INSERT INTO anagrafiche SET
id_ndg = :protocol,
nick = :nick,
nome = :nome,
...
";
try{
$s = $pdo->prepare($sql);
$s->bindParam(':protocol', $protocol, PDO::PARAM_ST);
$s->bindParam(':nick', $nick, PDO::PARAM_ST);
$s->bindParam(':nome', $nome, PDO::PARAM_ST);
...
$s->bindParam(':some_integer', $some_integer, PDO::PARAM_INT);
...
$s->execute();
} catch (PDOException $e) {
...
}
bindValue()
có cú pháp tương tự với bindParam()
nhưng chỉ liên kết giá trị của biến tại thời điểm liên kết với tham số hơn là giá trị của biến tại thời điểm thực thi câu lệnh.