我正在尝试使用php将我的students.csv文件中的数据导入mysql。 csv文件中的条目使得列(student_number,fname,lname,level)将插入到biodata表中。
我也是从我的电脑上传student.csv文件。
当我运行页面时,屏幕上没有任何内容。
session_start();
require('includes/dbconnect.php');
require 'includes/header.inc.php';
//check for file upload
if (isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])) {
//upload directory
$upload_dir = "C:\Users\DOTMAN\Documents\students.csv";
//create file name
$file_path = $upload_dir . $_FILES['csv_file']['name'];
//move uploaded file to upload dir
if (!move_uploaded_file($_FILES['csv_file']['tmp_name'], $file_path)) {
//error moving upload file
echo "Error moving file upload";
}
//open the csv file for reading
$handle = fopen($file_path, 'r');
//turn off autocommit and deletethe bio data
mysql_query("SET AUTOCOMMIT=0");
mysql_query("BEGIN");
mysql_query("TRUNCATE TABLE biodata") or die(mysql_error());
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
//Access field data in $data array ex.
$student_number = $data[0];
$fname = $data[1];
$lname = $data[2];
$level = $data[3];
//Use data to insert into db
$query = "INSERT INTO biodata (student_number, fname, lname, level)
VALUES ('$student_number', '$fname', '$lname', '$level')";
mysql_query($query) or die (mysql_error());
}
}
答案 0 :(得分:1)
我建议您使用LOAD DATA INFILE命令上传CSV文件。这是一种快速的方法。
答案 1 :(得分:0)
如果您只需要执行此操作,我会考虑使用类似:http://csv2sql.com/
的内容答案 2 :(得分:0)
我能看到的一个直接问题是:
$upload_dir = "C:\Users\DOTMAN\Documents\students.csv";
//create file name
$file_path = $upload_dir . $_FILES['csv_file']['name'];
您已经将整个路径(包括文件名)分配给$upload_dir
变量 - 然后您再次附加上传的文件名。
如果您认为代码中存在错误,请先添加
ini_set('display_errors', 1);
error_reporting(E_ALL);
到PHP代码的开头并修复显示的任何警告/错误。然后,您可以通过在第一次调用中将第二个参数更改为0来关闭打印错误消息。
答案 3 :(得分:0)
你有没有调试$ _FILES:
print_r($_FILES);
做任何事之前
答案 4 :(得分:0)
$file = 'path/to.csv';
$lines = file($file);
$firstLine = $lines[0];
foreach ($lines as $line_num => $line) {
if($line_num==0) { continue; } //escape the header column
$arr = explode(",",$line);
$column1= $arr[0];
$column2= $arr[1];
echo $column1.$column2."<br />";
//put the mysql insert statement here
}