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

Perl:Cập nhật nhiều hàng bằng một lệnh gọi MySQL

Đầu tiên và quan trọng nhất, bạn tuyệt đối không nên nội suy biến trực tiếp vào chuỗi SQL của mình. Điều đó để lại khả năng xảy ra các cuộc tấn công SQL injection. Ngay cả khi các biến đó không đến từ thông tin người dùng nhập, nó vẫn để lại khả năng xuất hiện các lỗi nguy hiểm có thể làm hỏng dữ liệu của bạn.

Trình điều khiển MySQL DBD hỗ trợ nhiều câu lệnh, mặc dù nó bị tắt theo mặc định như một tính năng an toàn. Xem mysql_multi_statements theo Phương thức lớp trong tài liệu DBD ::mysql.

Nhưng một giải pháp tốt hơn nhiều, giải quyết được cả hai vấn đề cùng một lúc và dễ di chuyển hơn, là sử dụng các câu lệnh đã chuẩn bị sẵn và các giá trị trình giữ chỗ.

my $sth = $dbh->prepare("UPDATE LOW_PRIORITY TableName SET E1=?,F1=? WHERE X=?");

Sau đó, lấy dữ liệu của bạn theo một số loại:

while( $whatever) { 
    my ( $EC, $MR, $EM ) = get_the_data();
    $sth->execute( $EC, $MR, $EM );
}

Bạn chỉ cần chuẩn bị câu lệnh một lần và các giá trị trình giữ chỗ được thay thế (và đảm bảo được trích dẫn chính xác) bằng trình điều khiển DBD.

Đọc thêm về trình giữ chỗ trong tài liệu DBI .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lưu trữ Java Instant trong cơ sở dữ liệu MySQL

  2. PDO ::commit () thành công hay thất bại

  3. Cách sửa lỗi Illuminate \ Database \ QueryException:SQLSTATE [HY000] [1044] Quyền truy cập bị từ chối đối với người dùng

  4. Mac OS X Lion - mysql:không tìm thấy lệnh

  5. Mysql tham gia và tổng là kết quả nhân đôi