Câu hỏi này xuất hiện theo thời gian. Không có giải pháp tốt nào để chạy tập lệnh .sql trực tiếp từ PHP. Có những trường hợp cạnh mà các câu lệnh phổ biến trong tập lệnh .sql không thể được thực thi như câu lệnh SQL. Ví dụ:công cụ mysql có lệnh nội trang
không được MySQL Server công nhận, ví dụ:CONNECT
, TEE
, STATUS
và DELIMITER
.
Vì vậy, tôi +1 cho @Ignacio Vazquez-Abrams's câu trả lời
. Bạn nên chạy tập lệnh .sql của mình trong PHP bằng cách gọi mysql
, chẳng hạn với shell_exec()
.
Tôi đã nhận được bài kiểm tra này đang hoạt động:
$command = "mysql --user={$vals['db_user']} --password='{$vals['db_pass']}' "
. "-h {$vals['db_host']} -D {$vals['db_name']} < {$script_path}";
$output = shell_exec($command . '/shellexec.sql');
Xem thêm câu trả lời của tôi cho những câu hỏi liên quan sau:
- Đang tải tệp .sql từ bên trong PHP
- có thể gọi một tập lệnh sql từ một thủ tục được lưu trữ trong một tập lệnh sql khác không?
- PHP:nhiều truy vấn SQL trong một câu lệnh mysql_query