使用PHP将CSV文件插入MYSQL

时间:2014-05-24 14:50:36

标签: php

经过一番搜索,我找到了一些帮助,如何使用PHP将CSV文件导入MYSQL表。

一切正常,直到(在我看来)当我想在我的代码中分成几行时出错。

这里有你到目前为止的代码:

$databasetable = "articles";
$fieldseparator = "|";
$lineseparator = "\n";
$csvfile = "ARTICLES.CSV";

if(!file_exists($csvfile)) {
    echo "File not found. Make sure you specified the correct path.\n";
    exit;
}

$file = fopen($csvfile,"r");

if(!$file) {
    echo "Error opening data file.\n";
    exit;
}

$size = filesize($csvfile);

if(!$size) {
    echo "File is empty.\n";
    exit;
}

$csvcontent = fread($file,$size);

fclose($file);

require('includes/incl/conn.inc.php');

$lines = 0;
$queries = "";
$linearray = array();

foreach(split($lineseparator,$csvcontent) as $line) {

    $lines++;

    $line = trim($line," \t");

    $line = str_replace("\r","",$line);


    $linearray = explode($fieldseparator,$line);

        $linemysql = implode("','",$linearray);

    $upload_article_query = "INSERT INTO $databasetable VALUES ($linemysql)";
    $upload_article_stmt = $dbh->prepare($upload_article_query);
    $upload_article_stmt->execute;

我的CSV看起来像是这样,有大约5700行文章(新行上的每篇文章和字段都以“|”分开

16158|-H|Factory installed heater|10|S|400|CCTV|45.0|E|  1829|Factory installed heater|Factory installed heater
16159|-IR|Factory installed IR LED ring|10|S|400|CCTV|50.0|E|  1829|Factory installed IR LED ring|Factory installed IR LED ring

在我的表中包含12个列,其中必须导入此数据。

我感觉问题出在我的foreach(split())上,因为如果我执行$ linearray的print_r,我只有一个数组用于所有键。

如果我执行$ linemysql的var_dump,我会得到一个包含所有内容的“字符串(2228255)”。

这是我第一次这样做,也许我的代码遗漏了一些东西。谁能帮我这个?

0 个答案:

没有答案