我知道這是重複的問題。但我已經嘗試了所有我在https://stackoverflow.com/上找到的答案。當導入CSV跳過標題或第一行
我認爲在我的情況下,我插入和更新數據,如果相同的日期匹配比記錄將更新,如果不是它將插入。
下面是我的文件代碼:
<?php
if (isset($_POST['submit']) && $_POST['upload-csv'] == 'upload') {
$error = array();
$success = array();
$filename = $_FILES['file']['name'];
$filetype = wp_check_filetype($filename);
if ($filetype['ext'] == 'csv' && $filetype['type'] == 'text/csv') {
$handle = fopen($_FILES['file']['tmp_name'], "r");
$row = 0;
$skip_row_number = array("1");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$data = array_map("utf8_encode", $data);
if ($row > 0)
{
$table_name = $wpdb->prefix . 'prayer';
$ipquery = $wpdb->get_results("SELECT * FROM `$table_name` WHERE `date` = '".$data[0]."'");
$query_res = $wpdb->num_rows;
// Check if same date data
if($query_res >=1){
$updateQuery = "UPDATE `$table_name` SET
`date` = '".$data[0]."',
`first_start` = '".$data[1]."',
`first_end` = '".$data[2]."',
`second_start` = '".$data[3]."',
`second_end` = '".$data[4]."',
`third_start` = '".$data[5]."',
`third_end` = '".$data[6]."',
`forth_start` = '".$data[7]."',
`forth_end` = '".$data[8]."',
`five_start` = '".$data[9]."',
`five_end` = '".$data[10]."',
`done` = '".$data[10]."'
WHERE `$table_name`.`date` = '".$data[0]."';";
$up_res = $wpdb->query($updateQuery);
}else{
$query = "INSERT INTO $table_name (date, first_start, first_end, second_start,
second_end, third_start, third_end, forth_start, forth_end, five_start, five_end, done)
VALUES ('".$data[0]."','".$data[1]."','".$data[2]."','".$data[3]."','".$data[4]."','".$data[5]."','".$data[6]."','".$data[7]."','".$data[8]."','".$data[9]."','".$data[10]."','".$data[11]."')";
$insert_res = $wpdb->query($query);
}
}
$row++;
}
fclose($handle);
$success[] = 'Import done.';
} else {
$error[] = 'Please upload CSV file only';
}
}
?>
我曾嘗試下面的答案忽略標題:
Skip the first line of a CSV file
skip first line of fgetcsv method in php
幫我排序出來是問題。
您可以直接調用'fgetcsv($處理,1000, 「」))的',而上述'線(($數據= fgetcsv($處理,1000, 「」))!= = FALSE {' –
只需做一個簡單的'$ data = fgetcsv($ handle,1000,「,」);'在開始while循環之前。這將讀取,並忽略該文件的第一行 – RiggsFolly
我已嘗試過,但同樣的問題一次又一次。 – mageDev0688