Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP:LOAD DATA INFILE синтактични грешки

INTO TABLE '$this->table'

Не използвайте единични кавички, за да цитирате име на таблица. Единичните кавички са за низови литерали или литерали за дата .
Или не използвайте кавички, или отбелязва обратно за разграничени идентификатори .

INTO TABLE `$this->table`

Re your comment:

Очевидно сте премахнали кавички от и двете името на файла и името на таблицата. Не това имах предвид. Просто премахнете кавичките на низа от името на таблицата. Имате нужда от тях за името на файла.

Пример:

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

Прегледайте синтаксиса, документиран на http://dev.mysql. com/doc/refman/5.6/en/load-data.html

Забележете наличието или отсъствието на кавички около INFILE 'file_name' и INTO TABLE tbl_name :

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

Всъщност нямате нужда от обратни отметки около името на таблицата, освен ако името на таблицата ви не съдържа специални знаци, интервали или запазени думи.

Получавате тази грешка:

Точно така, не всички SQL команди са съвместими с prepare() . Не проверих това за вашия случай, защото първо разрешавахме синтактичната грешка. Можете да намерите списък с командите, които могат да бъдат prepare() d под заглавието SQL синтаксис, разрешен в подготвени отчети на тази страница:http://dev .mysql.com/doc/refman/5.6/en/sql-syntax-prepared-statements.html

Свързах се с документите за MySQL 5.6, но трябва да посетите документите за версията на MySQL, която използвате. Тъй като списъкът със съвместими команди се променя от издание на издание.

Така че не можете да използвате prepare() -- ще трябва да използвате exec() или query() вместо това за LOAD DATA INFILE команда.

Като алтернатива, ако използвате PDO, можете да зададете атрибута PDO::ATTR_EMULATE_PREPARES на true . Това ще накара PDO да фалшифицира MySQL, така че подготви() е без операция и заявката всъщност се изпраща по време на изпълнение().



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявка за избор на низове завършва с определен знак

  2. Изгледи на MySQL:Позоваване на едно изчисляемо поле (по име) в друго изчисляемо поле

  3. Добре ли е да използвате htmlspecialchars() преди вмъкване в MySQL?

  4. не мога да се свържа с mysql на AWS RDS (грешка 2003)

  5. MySQL – Обяснено кодиране и съпоставяне на набор от символи в базата данни