Я загружаю CSV-файл на свой php-сервер с помощью этой формы:
<form action = "importCSV.php" method = "post" enctype = "multipart/form-data">
<br>Select file: <input type = "file" name = "file">
<br><input type = "submit" name = "import" value = "Import file">
</form>
И что я хочу сделать с этим файлом, так это добавить его содержимое в таблицу на моем сервере mysql.
$url=$_FILES['file']['tmp_name'];
$con = new mysqli(HOST, US, PW, BBDD);
$sql = "load data local infile '" . $url. " into table users fields terminated by ':'";
$con->query($sql);
$con->close();
Проблема в том, что в папке «tmp» на php-сервере нет файла csv, но в этой строке $url=$_FILES['file']['tmp_name'] $ url имеет реальный URL-адрес с tmp_name. Я не понимаю, что там происходит: у меня есть URL-адрес с tmp_name файла, но его на самом деле не существует?
Я проверил файл php.ini, и это значения для загрузки файлов:
file_uploads=On
upload_tmp_dir = "C:\xampp\tmp"
upload_max_filesize=2M
max_file_uploads=20
Меня не беспокоит "upload_max_filesize", файл, который я пытаюсь загрузить, имеет размер всего 56 байт.
Пожалуйста, какие-нибудь идеи?
Так что мне нужно переместить его, добавить в таблицу, а затем удалить?
Вы ищете файл после завершения сценария? Или вы говорите, что запрос load data... не удался?
ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); в начало вашего скрипта. Это заставит любые ошибки mysqli_ генерировать исключение, которое вы можете видеть в браузере, а также обычные ошибки PHP.
Запрос load data не выполняется, потому что файл не найден.






Я не могу в это поверить ...
Похоже, что сервер mysql не понимает этот символ \. Это всего лишь проблема совместимости операционных систем.
Решение - только заменить символ: $url= str_replace("\\", "/", $url).
Загруженный файл существует в папке tmp ТОЛЬКО до тех пор, пока вы его не переместите или скрипт не завершится. Когда скрипт завершает работу, PHP автоматически удаляет файл из папки tmp.