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

Phòng chống tiêm MySQL

Sử dụng các câu lệnh đã chuẩn bị sẵn

Những gì họ làm trước tiên là gửi một phiên bản của truy vấn với trình giữ chỗ cho dữ liệu. Truy vấn được xác minh và chuẩn bị. Nếu thành công, bạn có thể gửi các giá trị mà cơ sở dữ liệu sẽ chèn một cách an toàn vào truy vấn đã chuẩn bị.

Có ba tùy chọn:

Tiện ích mở rộng MySQLi

$stmt = $mysli->prepare('INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
                         VALUES 
                         (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');

$stmt->bindParam('issssssssssssss', $_POST['costumer_ID'], ..., $_POST['Credit_CardType']);
$stmt->execute();

Tiện ích mở rộng PDO

// use native prepared statements if supported
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

$stmt = $pdo->prepare('INSERT INTO costumer (costumer_ID,  first_name, last_name, birth_date, adress,  city, state, postal_code, country, phone, email_client,username, password, Credit_Card, Credit_CardType) 
                       VALUES 
                       (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?');

$stmt->bindParam(1, $_POST['costumer_ID'], PDO::PARAM_INT);
...
$stmt->bindParam(15, $_POST['Credit_CardType']);

$stmt->execute();

Truy vấn thô qua bất kỳ tiện ích mở rộng nào

Tôi sẽ không đưa ra một ví dụ vì hai phương pháp còn lại vượt trội hơn nhiều.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng MySQL lớn

  2. Không thể đưa ra các câu lệnh thao tác dữ liệu với executeQuery ()

  3. Menu đa cấp điều khiển cơ sở dữ liệu PHP

  4. MySQL - Lấy giá trị hàng từ bảng khác nhau tùy thuộc vào giá trị của hàng trong bảng

  5. Tại sao mysqli fetch () trả về kết quả trống từ cột longtext?