Bạn gặp nhiều trường hợp vấn đề hơn là chỉ có dấu chấm phẩy trong chuỗi.
- Tập lệnh nội trang
các lệnh không thể được thực thi bởi
mysql_query()
, nhưUSE
. - Các câu lệnh không được kết thúc bằng dấu chấm phẩy, như
DELIMITER
. - Các câu lệnh có chứa dấu chấm phẩy, nhưng không chứa bên trong dấu ngoặc kép, như
CREATE PROCEDURE
.
Tôi không biết có cách nào dễ dàng để xử lý tác vụ này mà không cần gửi đến ứng dụng dòng lệnh mysql. Tôi nhận ra rằng bạn đã nói rằng bạn không thể dựa vào ứng dụng khách đó, nhưng nếu không có ứng dụng khách đó, bạn cần một lượng lớn mã PHP để phân tích cú pháp tập lệnh và thực thi các câu lệnh một cách thích hợp.
Bạn có thể tìm thấy mã như vậy bên trong phpMyAdmin sản phẩm. Tuy nhiên, sản phẩm đó được cấp phép theo GPL, vì vậy nếu bạn sử dụng bất kỳ mã nào, bạn cũng phải cấp phép cho dự án của riêng mình theo GPL.
Xem thêm câu trả lời của tôi cho những câu hỏi liên quan sau:
- Chạy tệp MySQL * .sql bằng PHP
- Đ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?