Проблемы с LOCAL INFILE после переключения на mysqli

Любой, кто знает о проблемах с использованием LOCAL INFILE в PHP, поймет мое разочарование в этом.

Я ранее LOCAL INFILE работал правильно во всех моих PHP-скриптах, используя флаг 128 в моем вызове соединения.

mysql_connect(DB_SERVER,DB_USER,DB_PASS,false,128) 

Теперь я пытаюсь переключиться на mysqli, поскольку старый mysql обесценивается. Я пробовал все, что мог найти на каждом форуме, без везения.

Мой вызов соединения в mysqli кажется прекрасным:

 $connection = mysqli_init(); if (!$connection) {die('mysqli_init failed');} if (!mysqli_options($connection, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {die('Setting MYSQLI_INIT_COMMAND failed');} if (!mysqli_options($connection, MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');} if (!mysqli_options($connection, MYSQLI_OPT_LOCAL_INFILE,true)) {die('Setting MYSQLI_OPT_LOCAL_INFILE failed');} if (!mysqli_real_connect($connection, DB_SERVER, DB_USER, DB_PASS, DB_SELECT)) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } 

В файле my.cnf содержатся соответствующие параметры:

 [mysql] local-infile=1 [mysqld] local-infile=1 

my php.ini также содержит соответствующие параметры:

 [MySQLi] mysqli.allow_local_infile = On [MySQL] mysql.allow_local_infile = On 

Запрос даже возвращает true при выполнении! Но я все еще не загружаю данные в свою таблицу.

 $query = "LOAD DATA LOCAL INFILE '{$file}' INTO TABLE {$table} FIELDS TERMINATED BY '{$fieldTerm}' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '{$lineTerm}' IGNORE {$skipLines} LINES"; if(mysqli_query($connection,$query)) {$message .= "Load Complete <br />";} //Message returns with "Load Complete". 

Помимо выполнения вызова system (), я понятия не имею, что делать, чтобы сделать эту работу. Он отлично работал с mysql, только не сейчас с mysqli.

Почему LOCAL INFILE так сложно? Это слишком длительная проблема.

РЕДАКТИРОВАТЬ:

Странно, когда я запускаю mysqli_info () после запроса, он говорит, что он выполнен правильно.

 Records: 4 Deleted: 0 Skipped: 0 Warnings: 0 

В тестовом файле записано 4 записи, так что это правильно.

Solutions Collecting From Web of "Проблемы с LOCAL INFILE после переключения на mysqli"

Быстрый поиск в Google привел следующую запись об ошибке PHP: https://bugs.php.net/bug.php?id=55737 .

Эта проблема, похоже, вращается вокруг настройки php.ini open_basedir: http://www.php.net/manual/en/ini.core.php#ini.open-basedir

Функция LOAD DATA LOCAL INFILE не работает с mysql5.5 и php5.4.4 на Debian Wheezy с ограничениями open_basedir. Он отлично работает, когда open_basedir отключен или установлен в ничто.

EDIT (решение для справки): проблема с OP состояла в команде «SET AUTOCOMMIT = 0». Это была загрузка и обработка, но не была привязана к db.