用于从CSV上传创建MySQL表的PHP代码

时间:2014-03-18 15:57:56

标签: php mysql csv

我知道之前已经问过这个问题了,相信我,我已经在网上搜索了几天,试图找到有效的代码。

我有一个从MS Access创建的CSV文件,我每天用它来更新在线日历。目前,我将进入phpMyAdmin删除旧表,然后上传CSV并将其重命名为" CALENDAR"。我想创建一个自动执行此操作的PHP页面。只需单击一下,访问就会导出CSV并在我的服务器上打开一个网页,该网页将从" C:\ accessExport \ CALENDAR.csv"上传CSV文件。此CSV文件在第一行中包含字段名称。

我已经非常接近,唉,我找到的代码不起作用。它只是显示一个空白的网页。我之前使用其他开发人员PHP代码时遇到了这个问题,我发现问题出现了,因为给定的代码在需要单引号时使用双引号。如果您可以查看我的代码或建议更好的方法,我会非常感激。

以下是我正在使用的代码的链接: http://websitedevelopmentind.blogspot.com/2014/01/create-mysql-table-from-csv-file-using.html

谢谢!

<?php

 //table Name
$tableName = "CALENDAR";
//database name
$dbName = "CertCalendar";


 $conn = mysql_connect("localhost", "username", "password") or die(mysql_error());
 mysql_select_db($dbName) or die(mysql_error());

//get the first row fields
$fields = "";
$fieldsInsert = "";
if (($handle = fopen("C:\accessExport\CALENDAR.csv", "r")) !== FALSE) {
if(($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
    $fieldsInsert .= '(';
    for ($c=0; $c < $num; $c++) {
        $fieldsInsert .=($c==0) ? '' : ', ';
        $fieldsInsert .="`".$data[$c]."`";
        $fields .="`".$data[$c]."` varchar(500) DEFAULT NULL,";
    }

    $fieldsInsert .= ')';
}


//drop table if exist
if(mysql_num_rows(mysql_query("SHOW TABLES LIKE '".$tableName."'"))>=1) {
  mysql_query('DROP TABLE IF EXISTS `'.$tableName.'`') or die(mysql_error());
}

//create table
$sql = "CREATE TABLE `".$tableName."` (
          `".$tableName."Id` int(100) unsigned NOT NULL AUTO_INCREMENT,
          ".$fields."
          PRIMARY KEY (`".$tableName."Id`)
        ) ";

$retval = mysql_query( $sql, $conn );

if(! $retval )
{
  die('Could not create table: ' . mysql_error());
}
else {
    while(($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

            $num = count($data);
            $fieldsInsertvalues="";
            //get field values of each row
            for ($c=0; $c < $num; $c++) {
                $fieldsInsertvalues .=($c==0) ? '(' : ', ';
                $fieldsInsertvalues .="'".$data[$c]."'";
            }
            $fieldsInsertvalues .= ')';
            //insert the values to table
            $sql = "INSERT INTO ".$tableName." ".$fieldsInsert."  VALUES   ".$fieldsInsertvalues;
            mysql_query($sql,$conn);   
    }
    echo 'Table Created';   
}

fclose($handle);

}

?>

0 个答案:

没有答案