Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

pdo chuẩn bị thoát khỏi dấu ngoặc kép

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL, Lỗi 126:Tệp khóa không chính xác cho bảng

  2. Cách chuyển các câu lệnh điều kiện vào một truy vấn mySql

  3. Làm thế nào để sửa chữa bảng xampp 'mysql.user' bị hỏng?

  4. Tại sao tham số ràng buộc trong mệnh đề ORDER BY không sắp xếp thứ tự kết quả?

  5. Chèn cơ sở dữ liệu mysql đang thay đổi tất cả các ID thành 4294967295