Tôi đã thử kết xuất dữ liệu của mình qua tập lệnh php nhưng không có dòng lệnh. Vì vậy tôi sử dụng kịch bản này Đã tạo tệp .sql của tôi và sau đó tôi đã thử sử dụng tập lệnh của mình:
$link = mysql_connect($host, $user, $pass);
mysql_select_db($tên, $liên kết);
$sqlFile = 'sql.sql';
$fsize = kích thước tệp ($sqlFile);
$fopen = fopen($sqlFile, 'r');
$fread = fread($fopen, $fsize);
đóng($fopen);
mysql_query($fread) hoặc die(mysql_error());
mysql_close();
Khi tôi cố gắng kết xuất dữ liệu, tôi gặp lỗi:
Bạn có lỗi trong cú pháp SQL; hãy kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn để biết cú pháp đúng cần sử dụng gần 'CREATE TABLE `ps_access` (`id_profile` int(10) unsigned NOT NULL,`id_tab` int(10' tại dòng 1
Nhưng khi tôi dán sql vào tab đầu vào sql của phpMyAdmin, không có vấn đề gì với mã sql này:
XÓA BẢNG NẾU TỒN TẠI `ps_access`;
TẠO BẢNG `ps_access` (
`id_profile` int(10) không dấu KHÔNG NULL,
`id_tab` int(10) không dấu KHÔNG NULL,
`view` int(11) KHÔNG NULL,
`add` int(11) KHÔNG NULL,
`edit` int(11) KHÔNG NULL,
`xóa` int(11) KHÔNG NULL,
KHÓA CHÍNH (`id_profile`,`id_tab`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Vậy lỗi của tôi trong tập lệnh php là ở đâu và làm cách nào để khắc phục nó để kết xuất dữ liệu?
Tệp SQL trung bình khoảng 800KB
Trân trọng, George!
Lỗi xảy ra do mysql_query không hỗ trợ nhiều truy vấn:
mysql_query() gửi một truy vấn duy nhất (không hỗ trợ nhiều truy vấn) đến cơ sở dữ liệu đang hoạt động trên máy chủ được liên kết với link_identifier đã chỉ định.
( nguồn )
Về mặt lý thuyết bạn có thể sử dụng nổ tung + Vòng lặp foreach để gửi từng truy vấn riêng biệt, nhưng trên thực tế, điều này có thể không hoạt động như mong đợi. Xem thêm:Tải các tệp .sql từ bên trong PHP
Tôi là một lập trình viên xuất sắc, rất giỏi!