2017-02-14 2 views
0

Я пытаюсь скопировать страницу, которая позволяет импортировать файл csv в базу данных. У меня проблемы с импортом. Он работал иногда, но без видимых причин он перестает работать. Я знаю, что скрипт подключается к db, когда я добавляю ручную запись в db, и truncate очищает базу данных нормально, но не импортирует данные. У меня есть таблица db с настройками столбцов, чтобы отражать каждый столбец в csv. Может ли кто-нибудь помочь в устранении этой проблемы. Вот мой код.импорт файла csv в базу данных, php

дб-config.php

<?php 
    define('_DB_HOST_NAME','localhost'); 
    define('_DB_USER_NAME','root'); 
    define('_DB_PASSWORD',''); 
    define('_DB_DATABASE_NAME','stock_planner'); 

    $dbConnection = mysqli_connect(_DB_HOST_NAME,_DB_USER_NAME,_DB_PASSWORD,_DB_DATABASE_NAME); 

?> 

index.php

<?php 
    if(isset($_POST['submit'])){ 
     include_once 'db-config.php'; 
     if (!$dbConnection) 
     { 
      print "<h1>Unable to connect to the database, contact your administrator!</h1>"; 
     } 
     else 
     { 
     $truncate = "TRUNCATE TABLE stock_sales_report"; 
     $file = $_FILES['csv_stock']['name']; 
     $import = "LOAD DATA LOCAL INFILE '$file' 
       INTO TABLE stock_sales_report 
       FIELDS TERMINATED BY ',' 
       OPTIONALLY ENCLOSED BY '\"' 
       LINES TERMINATED BY '\n' 
       IGNORE 1 LINES;"; 
     mysqli_query($dbConnection,$truncate); 
     mysqli_query($dbConnection,$import); 
     print "<h1>successfully imported.</h1>"; 
     } 
    } 
?> 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Planner</title> 
</head> 
<body> 
    <form method='POST' enctype='multipart/form-data'> 
     Upload CSV: <input type='file' name='csv_stock' /> <input type='submit' name='submit' value='import' /> 
    </form> 
</body> 
</html> 
+2

У вас возникли ошибки? – Ibu

+0

Это может быть связано с временным характером '$ _FILES': http://www.phpforkids.com/php/php-forms-file-uploads.php. Выполнять эти другие проверки отдельно от 'isset' для загрузки? http://www.phpforkids.com/php/php-forms-file-uploads.php –

ответ

0

Сначала вам необходимо соединение с учетной записью, которая имеет права доступа к файлам базы данных. (https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html#priv_file) Права на FILE предоставляются на уровне сервера, а не только для конкретной базы данных.

Во-вторых, вам нужно будет отправить полный путь файла к команде, если он не загружен в тот же каталог, что и исполняемый скрипт.

+0

У меня была проблема -secure-file-priv, которая не принимала бы мой файл из неавторизованной папки, которую я отключил. Затем мой импорт остановился на столбцах INT, где значение csv было пустым, я изменил SQL-запрос, чтобы изменить пустые значения на 0 в столбцах INT. Проблема, с которой я столкнулся, заключается в том, что импорт застрял на символах не utf8, отображаемых в CSV, я могу обойти это, установив базу данных в Collation на Latin1, и она импортирует OK, но является ли это хорошей практикой? Наверное, мне нужен способ удаления этих шестнадцатеричных символов из CSV перед импортом. Какой был бы лучший способ сделать это? –

+0

UTF-8 должен охватывать все ваши наборы символов. У вас может быть несоответствие между сортировкой базы данных и вашим соединением. – databyss

Смежные вопросы