2015-10-01 2 views
1

Я попытался во второй попытке использовать LOAD DATA INFILE для загрузки записей из CSV в базу данных MySQL, но я всегда сталкиваюсь с ошибками во всех своих попытках, разными ошибками каждый раз, поэтому я бы предпочел используйте примитивный способ зацикливания записей.PHP LOAD DATA INFILE VS Fopen

Мой последний сценарий:

<?php 

//Connect to Database 
$maindir = realpath(__DIR__); 
include($maindir . '/connectme.php'); 

$queme = "LOAD DATA INFILE '" . $_FILES['fromfileupload']['tmp_name'] . "' 
INTO TABLE thecardb 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '\"' 
LINES TERMINATED BY ',,,\\r\\n' 
IGNORE 1 LINES 
(carid, carname, carbrand, carprice, carcolor)" ; 

if (mysqli_query($concon, $queme)) 
{ 
    echo "Success"; 
} 
?> 

Моя последняя ошибка

Access denied for user '########_######'@'##.#.#.##' (using password: YES)

я заменил части ошибки, как # по причинам конфиденциальности.

Это и всегда раздражало меня, я считаю, что часть проблемы связана с некоторыми настройками разрешения в php.ini или из других конфигураций PHP, которые я не могу получить или найти (я использую веб-хостинг и не запускать этот сайт на моем собственном сервере). Смогу ли я использовать fopen() для загрузки записей из CSV вместо использования LOAD DATA INFILE? Я думаю, что это мое самое простое решение прямо сейчас, которое может работать (используя mysqli_multi_query). Я имею дело только с 5000-10000 записей.

ответ

0

Erm ... Я думаю, что сообщение об ошибке в значительной степени сказало вам, в чем проблема.

Доступ запрещен.

Несколько вещей, которые вы должны проверить ...

  1. счет пользователя и пароль. Правильны ли они?
  2. Имеет ли эта учетная запись доступ к этой базе данных?
  3. Имеет ли эта учетная запись доступ к таблице, в которую вы загружаете данные?
  4. Имеет ли учетная запись права на выполнение команды загрузки данных?

Это должно охватывать все, что вам нужно проверить сейчас ...

+0

Спасибо за это, но, пожалуйста, прочитайте мой пост, я уже в курсе возможных проблем безопасности. Да, чтобы # 1- # 3, и проблема №4, снова я использую план веб-хостинга для своего веб-сайта и доступ к определенным конфигурациям, например php.ini, для меня проблема. Мой вопрос: было бы хорошо использовать fopen или другие методы петли, чтобы добавить 5000 записей в базу данных, поскольку я планирую просто пойти таким образом –

+0

Да, все будет хорошо. Просто создайте [подготовленный оператор] (http://docs.php.net/manual/en/mysqli.quickstart.prepared-statements.php), а затем зациклируйте файл через [fgetcsv] (http: //docs.php .net/fgetcsv), присвойте значения связанным параметрам ([list()] (http://docs.php.net/list) может быть полезно здесь) и выполнить инструкцию. 5k записей ... это ничего ;-) – VolkerK