gpt4 book ai didi

php - 为什么 fgetcsv 跳过第一行?

转载 作者:行者123 更新时间:2023-12-01 22:24:38 27 4
gpt4 key购买 nike

我正在使用 php 函数 fgetcsv() 来读取 csv 文件。 csv 文件的结构是这样的,第一行包含我要导入的数据,而不是列标题。我想从第一行导入,但我注意到第一行被忽略了。

如果我将第一行留空,同样的行为仍然存在。只有当我在第一行的单元格中添加一些虚拟数据时,包含我要导入的数据的第二行才真正被导入,并且之后的所有其他行都按预期导入。

<?php
$handle = fopen($_FILES['materials']['tmp_name'], "r");
$data = fgetcsv($handle, 1000, ",");

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if($this->checkMaterialsDuplicate($data[3]) != false) {
Session::setSession('import_failure', 'The Materials for TX '.
$this->_tx_no.' have already been added.');
Helper::redirect('?section=store&subsection=import_design&page=import_design');
}
echo "<pre>";print_r($data);echo "</pre>";exit;
$this->_fields[] = 'implicit_qty_of_fittings';
$this->_values[] = $this->db->escape($data[1]);

$this->_fields[] = 'qty_of_desired_materials';
$this->_values[] = $this->db->escape($data[2]);

$this->_fields[] = 'tx_no';
$this->_values[] = $this->db->escape($data[3]);

$this->_fields[] = 'contractor_name';
$this->_values[] = $this->db->escape($data[4]);

$this->_fields[] = 'contractor_id';
$this->_values[] = $this->db->escape($data[5]);

$this->_fields[] = 'issue_date';
$this->_values[] = $this->db->escape($data[6]);

$this->_fields[] = 'due_date';
$this->_values[] = $this->db->escape($data[7]);

$this->_fields[] = 'fitting_id';
$this->_values[] = $this->db->escape($data[8]);

$this->_fields[] = 'qty_multiplied_fittings';
$this->_values[] = $this->db->escape($data[9]);

$this->_fields[] = 'imported';
$this->_values[] = 1;

$sql = "INSERT INTO `{$this->_table_6}` (`";
$sql .= implode("`, `", $this->_fields);
$sql .= "`) VALUES ('";
$sql .= implode("', '", $this->_values);
$sql .= "')";

if (!$this->db->query($sql)) {
$error[] = $sql;
}

$this->_subcontractor_name = $data[4];
$this->_subcontractor_id = $data[5];
unset($this->_fields);
unset($this->_values);
}

样本 csv here 的链接

最佳答案

在循环开始之前,您额外调用了 fgetcsv() - 这将获取第一行然后丢弃它,这意味着循环将从第二行开始。

只需删除这一行,它就可以正常工作

$data = fgetcsv($handle, 1000, ",");

关于php - 为什么 fgetcsv 跳过第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36821308/

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