PHP set_local_infile_handler
Giới thiệu về `set_local_infile_handler` trong PHP
Hàm `set_local_infile_handler` trong PHP được sử dụng để thiết lập một hàm xử lý tùy chỉnh cho các tệp được tải lên từ máy chủ đến cơ sở dữ liệu MySQL khi sử dụng lệnh `LOAD DATA LOCAL INFILE`. Điều này cho phép lập trình viên điều khiển cách mà dữ liệu được đọc từ các tệp, trước khi nó được chèn vào cơ sở dữ liệu.
Cú pháp
mysqli_options($mysqli, MYSQLI_OPT_LOCAL_INFILE, true); mysqli_set_local_infile_handler($mysqli, $handler);
Tham số
- $mysqli: Đối tượng mysqli kết nối đến cơ sở dữ liệu MySQL. - $handler: Hàm xử lý tùy chỉnh để xử lý các tệp được tải lên.
Ví dụ sử dụng
Dưới đây là một ví dụ đơn giản để minh họa cách sử dụng `set_local_infile_handler`:
$mysqli = new mysqli("localhost", "user", "password", "database"); // Thiết lập option LOCAL INFILE mysqli_options($mysqli, MYSQLI_OPT_LOCAL_INFILE, true); // Định nghĩa hàm xử lý function local_infile_handler($file) { // Mở tệp và thực hiện xử lý dữ liệu if (($handle = fopen($file, "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { // Xử lý dữ liệu ở đây } fclose($handle); } return 0; // Trả về 0 để tiếp tục } // Thiết lập hàm xử lý mysqli_set_local_infile_handler($mysqli, "local_infile_handler"); // Thực thi câu lệnh SQL với LOAD DATA LOCAL INFILE $sql = "LOAD DATA LOCAL INFILE 'filepath.csv' INTO TABLE tablename FIELDS TERMINATED BY ','"; $mysqli->query($sql);
Lưu ý
Khi sử dụng `LOAD DATA LOCAL INFILE`, bạn cần đảm bảo rằng tùy chọn này được kích hoạt trong cấu hình của MySQL server. Nếu không, bạn có thể gặp lỗi liên quan đến quyền truy cập tệp.
Hàm `set_local_infile_handler` là một công cụ mạnh để xử lý dữ liệu trong các ứng dụng web xây dựng trên PHP, giúp tối ưu hóa cách xử lý tệp tải lên cho cơ sở dữ liệu.