PHP чтение файла в массив - PullRequest
       5

PHP чтение файла в массив

0 голосов
/ 31 октября 2011

Мне нужно извлечь данные из файла CSV и вставить их в базу данных MySQL.

(см. Образец файла ниже)

Пока у меня есть массив со всем файлом (чтение файла с PHP):

Array ([0] => 01 [1] => 12345678X [2] => Title [3] => 120.00 ... и т. Д.

Как я могу изменить массив для создания групп по четыре для каждого элемента? У каждого элемента свой массив?

Например:

array( array (01,ISBN,Name,Price),
       array (01,ISBN,Name,Price)
      );

Кроме того, как я могу получить доступ к этим значениям индивидуально и вставить в MySQL?

Ex: $price = 1.25; <- в массиве </p>

Вот что у меня есть:

    $fp = @fopen($_FILES['filename']['tmp_name'], "r");

    if ($fp) {

         $arr = array();
         while(!feof($fp)) {
          $this_line = fgets($fp);  

          $line = explode("^",$this_line);

          if($line[0] != "") {          
              array_push($arr,$line[0]);
              }
          $i++;
         }

Приведенный выше код возвращает один большой массив с каждым столбцом и элементом. Мне бы хотелось, чтобы в одном массиве было по четыре элемента в каждом массиве, чтобы я мог обращаться к каждой «строке» индивидуально.

Пример файла:

ID 01
Title This is the title
Price 120.00
ISBN xxxxxx
^
ID 02
Title This is the title
Price 20.00
ISBN xxxxxx
^

1 Ответ

3 голосов
/ 31 октября 2011

Используйте fgetcsv , избегайте проблем с анализом CSV.

Он будет возвращать файл построчно, в массивах, что вы и просили.

Затем вы можете использовать подготовленный оператор MySQLi со связанными параметрами для вставки строк.

[РЕДАКТИРОВАТЬ] примерно так:

$file = fopen('data.csv', 'r');
$stmt = $connection->prepare("INSERT blah blah blah VALUES(?, ?, ?)");
while (($row = fgetcsv($file, 1000, "\t")) !== FALSE) {
  $stmt->bind_param('types string', $row[0], $row[1], etcetera);
  $stmt->execute();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...