INTO TABLE '$this->table'
No utilice comillas simples para citar el nombre de una tabla. Las comillas simples son para literales de cadena
o literales de fecha
.
No use comillas, o bien back-ticks para identificadores delimitados
.
INTO TABLE `$this->table`
Re tu comentario:
Al parecer, eliminó las comillas de ambos el nombre del archivo y el nombre de la tabla. Esto no es lo que quise decir. Simplemente elimine las comillas de cadena del nombre de la tabla. Los necesita para el nombre de archivo.
Ejemplo:
$sql = "LOAD DATA LOCAL INFILE '$this->file'
INTO TABLE `$this->table`
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\\n'
OPTIONALLY ENCLOSED BY '\"'
($columns)";
Revise la sintaxis documentada en http://dev.mysql. com/doc/refman/5.6/en/load-data.html
Observe la presencia o ausencia de comillas alrededor de INFILE 'file_name'
y INTO TABLE tbl_name
:
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
En realidad, no necesita las tildes invertidas alrededor del nombre de la tabla, a menos que el nombre de la tabla contenga caracteres especiales, espacios en blanco o palabras reservadas.
Tienes este error:
Correcto, no todos los comandos SQL son compatibles con prepare()
. No revisé eso para su caso, porque estábamos resolviendo el error de sintaxis primero. Puede encontrar una lista de los comandos que pueden ser prepare()
d bajo el encabezado Sintaxis SQL permitida en declaraciones preparadas en esta página:http://dev .mysql.com/doc/refman/5.6/en/sql-syntax-prepared-statements.html
Me vinculé a los documentos de MySQL 5.6, pero debe visitar los documentos para la versión de MySQL que usa. Porque la lista de comandos compatibles cambia de una versión a otra.
Entonces no puedes usar prepare()
-- tendrás que usar exec()
o query()
en lugar de un LOAD DATA INFILE
dominio.
Alternativamente, si está utilizando PDO, puede establecer el atributo PDO::ATTR_EMULATE_PREPARES
a true
. Eso hará que PDO falsifique MySQL, por lo que prepare() no funciona y la consulta se envía durante la ejecución().