Używanie mysql LOAD w PHP nie powiedzie się, ale robi to za pomocą linii poleceń

Mam stronę internetową php, która pozwala osobie przesłać plik. Chcę wyodrębnić nazwę pliku z $ _FILE, a następnie załadować wszystkie dane do mojej bazy danych.

Mój kod wygląda tak:

 $myfile = $_FILE['file']['tmp_file'];
 $executebatchloadsql = 'LOAD DATA LOCAL INFILE "'. $myfile .'" INTO TABLE testtable (fname, lname);
 mysql_query($executebatchloadsql) or die(mysql_error());

Ale komunikat o błędzie, który otrzymuję, mówi:

Użyta komenda nie jest dozwolona w tej wersji MySQL

Moje pytania są następujące

Czy mam użyćtmp_file imię lub nazwisko?Co muszę zrobić, aby uruchomić polecenie ładowania danych? Próbowałem śledzić post znaleziony pod adresemMySQL: Włącz LOAD DATA LOCAL INFILE ale wciąż daje mi ten sam błąd.

EDYTUJ 1:

Tak wygląda mój plik /etc/mysql/my.cnf:

[mysqld]

user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
local-infile

Ostatnia linia jest tym, co dodałem. Dodałem również tę samą linię do sekcji [mysql]:

[mysql]
local-infile

Po wprowadzeniu tych zmian zrestartowałem sql:

/etc/init.d/mysql restart

Ale nadal mam problem

EDYCJA 2:

Próbowałem także local-infile = 1, jak na ten sam wpis, o którym wspomniałem powyżej. Ale to też nie działa.

EDYCJA 3

Próbowałem dodać plik FILE do użytkownika .. tak:

GRANT FILE ON *.* TO root;

a kiedy pokażę granty dla roota, widzę, że został dodany. ale wciąż otrzymuję komunikat o błędzie, że używane polecenie nie jest dozwolone w mojej wersji mysql. Czy potrzebuję „= 1” po pliku w moim pliku my.cfg?

EDYTUJ 4:

Jako kolejny test próbowałem załadować plik ręcznie za pomocą wiersza poleceń, a nie przez php i zaakceptowałem go. Zalogowałem się jako root (co jest identycznym identyfikatorem używam mojej aplikacji do celów testowych), a następnie spróbowałem następującej komendy:

mysql> load data local infile '/var/www/testwebsite/abc.csv' into table testtable;
Query OK, 3 rows affected, 48 warnings (0.00 sec)
Records: 3  Deleted: 0  Skipped: 0  Warnings: 48

Ale nie wydaje mi się, aby kod PHP działał. Dzięki.!

questionAnswers(1)

yourAnswerToTheQuestion