INTO TABLE '$this->table'
Jangan gunakan tanda kutip tunggal untuk mengutip nama tabel. Kutipan tunggal adalah untuk literal string
atau literal tanggal
.
Tidak menggunakan tanda kutip, atau back-ticks untuk pengenal yang dibatasi
.
INTO TABLE `$this->table`
Kembali komentar Anda:
Anda tampaknya menghapus kutipan dari keduanya nama file dan nama tabel. Bukan ini yang saya maksud. Hapus saja tanda kutip string dari nama tabel. Anda memang membutuhkannya untuk nama file.
Contoh:
$sql = "LOAD DATA LOCAL INFILE '$this->file'
INTO TABLE `$this->table`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\\n'
OPTIONALLY ENCLOSED BY '\"'
($columns)";
Tinjau sintaks yang didokumentasikan di http://dev.mysql. com/doc/refman/5.6/en/load-data.html
Perhatikan ada atau tidaknya tanda kutip di sekitar INFILE 'file_name'
dan INTO TABLE tbl_name
:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
Anda sebenarnya tidak memerlukan tanda centang kembali di sekitar nama tabel, kecuali jika nama tabel Anda berisi karakter khusus, spasi, atau kata khusus.
Anda mendapatkan kesalahan ini:
Benar, tidak semua perintah SQL kompatibel dengan prepare()
. Saya tidak memeriksanya untuk kasus Anda, karena kami menyelesaikan kesalahan sintaks terlebih dahulu. Anda dapat menemukan daftar perintah yang dapat prepare()
d di bawah judul Sintaks SQL Diizinkan dalam Pernyataan yang Disiapkan di halaman ini:http://dev .mysql.com/doc/refman/5.6/en/sql-syntax-prepared-statements.html
Saya menautkan ke dokumen MySQL 5.6, tetapi Anda harus mengunjungi dokumen untuk versi MySQL yang Anda gunakan. Karena daftar perintah yang kompatibel berubah dari rilis ke rilis.
Jadi Anda tidak dapat menggunakan prepare()
-- Anda harus menggunakan exec()
atau query()
sebagai gantinya untuk LOAD DATA INFILE
memerintah.
Atau, jika Anda menggunakan PDO, Anda dapat menyetel atribut PDO::ATTR_EMULATE_PREPARES
untuk true
. Itu akan membuat PDO memalsukan MySQL, jadi prepare() adalah no-op dan kueri sebenarnya dikirim selama eksekusi().