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

dấu ngoặc kép trong Truy vấn SQL

mysql_real_escape_string () tiêm sql đã được đề cập.
Nhưng ngay bây giờ tập lệnh của bạn (cẩn thận) phải trộn câu lệnh sql với dữ liệu / tham số và trong bước tiếp theo, máy chủ MySQL phải tách dữ liệu khỏi câu lệnh.
Sử dụng (phía máy chủ) báo cáo chuẩn bị cả hai "phần" của truy vấn của bạn đều được gửi riêng và trình phân tích cú pháp sql (của máy chủ MySQL của bạn) không bao giờ có thể "nhầm lẫn" về nơi kết thúc câu lệnh và bắt đầu dữ liệu.

php-mysql mô-đun không biết các câu lệnh đã chuẩn bị nhưng php-mysql i PDO làm.

$pdo = new PDO('mysql:host=localhost;dbname=test', '...', '...'); 
$pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

$stmt = $pdo->prepare('
  UPDATE
    Videos
  SET
    Title=:title ,
    Preacher=:preacher ,
    Date=:date ,
    Service=:service ,
    File=:file ,
    Description=:description
  WHERE
    id=:id
');
$stmt->bindParam(':title', $_POST['title']);
$stmt->bindParam(':preacher', $_POST['preacher']);
$stmt->bindParam(':date', $_POST['date']);
$stmt->bindParam(':service', $_POST['service']);
$stmt->bindParam(':file', $_POST['file']);
$stmt->bindParam(':description', $_POST['description']);
$stmt->bindParam(':id', $_GET['id']); // really _GET?
$stmt->execute();

Có thể hơi quá nếu bạn chỉ sử dụng $ stmt cho một thao tác. Nhưng hãy cân nhắc rằng nếu không, bạn phải gọi mysql_real_escape_string () cho mỗi tham số.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thay đổi múi giờ MySQL Server?

  2. Có đúng về mặt khái niệm khi thực hiện SELECT MAX (id), v.v. để tìm hàng được chèn cuối cùng không?

  3. Truy vấn mySQL:Làm thế nào để chèn với UNION?

  4. MySQL cắt ngắn văn bản bằng dấu chấm lửng

  5. PHP / Apache:PHP Lỗi nghiêm trọng:Gọi đến hàm không xác định mysql_connect ()