繁体   English   中英

PHP将文件读入数组

[英]PHP Read File into Array

我需要从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?

例如: $price = 1.25; <-数组中

这是我到目前为止的内容:

    $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
^

使用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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM