gpt4 book ai didi

php - 上传 CSV 文件并导入 mysql 时出现错误

转载 作者:行者123 更新时间:2023-11-29 09:00:12 25 4
gpt4 key购买 nike

我正在使用以下脚本将数据从 CSV 文件导入到我的 mysql 数据库中。 CSV 设置如下:

Name  Postcode
fred hd435hg
bob dh345fj

上面是在 Excel 中的样子,在记事本中以原始 csv 格式查看,它看起来像这样:

name,postcode
frank,ng435tj

我遇到的问题是由于某种原因邮政编码列根本没有被导入,标题行也被作为记录导入,是否可以使其跳过第一行?我已经浏览了代码,但不明白为什么邮政编码没有被拉入,这很奇怪。

        <?php
//database connect info here

//check for file upload
if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){

//upload directory
$upload_dir = "./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');


while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {

//Access field data in $data array ex.
$name = $data[0];
$postcode = $data[1];

//Use data to insert into db
$sql = sprintf("INSERT INTO test (name, postcode) VALUES ('%s',%d)",
mysql_real_escape_string($name),
$postcode
);
mysql_query($sql) or (mysql_query("ROLLBACK") and die(mysql_error() . " - $sql"));
}


//delete csv file
unlink($file_path);
}
?>

最佳答案

您的 CSV 文件实际上似乎是一个 TSV 文件。它不使用逗号,而是使用制表符来分隔字段。

因此您需要更改 fgetcsv称呼。使用选项卡代替 ',':

 while (($data = fgetcsv($handle, 1000, "\t") ...

要跳过标题行,请在 while block 之前添加另一个人造 fgetcsv:

 fgetcsv($handle);
while (...) {

这将跳过第一行。 (一个简单的 fgets 也可以。)

<小时/>

哦,刚刚注意到:邮政编码也可能会被删除,因为您将它以十进制形式与 sprintf 占位符 %d (对于 $postcode<)连接到字符串中。如果该字段实际上包含字母(如您的示例中所示),那么这是行不通的。 -- 虽然我认为这只是一个错误的示例打印输出。

关于php - 上传 CSV 文件并导入 mysql 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com