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

PHP:TẢI DỮ LIỆU THÔNG TIN lỗi cú pháp

INTO TABLE '$this->table'

Không sử dụng dấu ngoặc kép để trích dẫn tên bảng. Dấu ngoặc kép dành cho chuỗi ký tự hoặc ký tự ngày .
Không sử dụng dấu ngoặc kép hoặc cách khác dấu tích lùi cho các số nhận dạng được phân tách .

INTO TABLE `$this->table`

Nhận xét lại của bạn:

Dường như bạn đã xóa dấu ngoặc kép khỏi cả hai tên tệp và tên bảng. Đây không phải là những gì tôi muốn nói. Chỉ cần xóa dấu ngoặc kép khỏi tên bảng. Bạn cần chúng cho tên tệp.

Ví dụ:

$sql = "LOAD DATA LOCAL INFILE '$this->file'
    INTO TABLE `$this->table`
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\\n'
    OPTIONALLY ENCLOSED BY '\"'
    ($columns)";

Xem lại cú pháp được ghi lại tại http://dev.mysql. com / doc / refman / 5.6 / en / load-data.html

Lưu ý sự hiện diện hoặc vắng mặt của dấu ngoặc kép xung quanh INFILE 'file_name'INTO TABLE tbl_name :

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name

Bạn không thực sự cần dấu tích lại xung quanh tên bảng, trừ khi tên bảng của bạn chứa các ký tự đặc biệt, khoảng trắng hoặc các từ dành riêng.

Bạn gặp lỗi này:

Đúng vậy, không phải tất cả các lệnh SQL đều tương thích với prepare() . Tôi đã không kiểm tra điều đó cho trường hợp của bạn, vì trước tiên chúng tôi đang giải quyết lỗi cú pháp. Bạn có thể tìm thấy danh sách các lệnh có thể là prepare() d dưới tiêu đề Cú pháp SQL được phép trong các câu lệnh soạn sẵn trên trang này: http:// dev .mysql.com / doc / refman / 5.6 / vi / sql-Cú pháp-Chuẩn bị-Câu lệnh.html

Tôi đã liên kết với tài liệu MySQL 5.6, nhưng bạn nên truy cập tài liệu cho phiên bản MySQL bạn sử dụng. Bởi vì danh sách các lệnh tương thích thay đổi từ bản phát hành sang bản phát hành.

Vì vậy, bạn không thể sử dụng prepare() - bạn sẽ phải sử dụng exec() hoặc query() thay vào đó cho LOAD DATA INFILE yêu cầu.

Ngoài ra, nếu bạn đang sử dụng PDO, bạn có thể đặt thuộc tính PDO::ATTR_EMULATE_PREPARES thành true . Điều đó sẽ làm cho PDO giả mạo MySQL, vì vậy, chuẩn bị () là một lựa chọn không cần thiết và truy vấn thực sự được gửi trong quá trình thực thi ().



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để nhận được ngày đầu tiên của mỗi tháng tương ứng trong mysql?

  2. Lỗi chung:1005 Không thể tạo bảng bằng Laravel Schema Build và Foreign Keys

  3. Ràng buộc khóa ngoại:Khi nào sử dụng BẬT CẬP NHẬT và BẬT XÓA

  4. MINUS trong MySQL?

  5. Làm cách nào để kết nối với Cơ sở dữ liệu MySQL bằng Python?