Rumah > Soal Jawab > teks badan
P粉8173547832023-08-29 00:13:45
Pertama, anda perlu membaca dan membuang baris pengepala dalam CSV. Kemudian, menggunakan pertanyaan yang sesuai, disediakan dan berparameter, anda boleh mengemas kini pangkalan data dengan betul. Memandangkan tarikh dalam fail .csv berada dalam format yang betul, tiada tindakan diperlukan, tetapi ini mungkin tidak berlaku dengan fail CSV lain dan selalunya tarikh perlu diformat semula sebelum ia boleh disimpan dengan betul ke dalam jadual.
<?php //index.php $connect = mysqli_connect("localhost", "root", "1234", "ml_database"); $message = ''; if(isset($_POST["upload"])) { if($_FILES['product_file']['name']) { $filename = explode(".", $_FILES['product_file']['name']); if(end($filename) == "csv") { $handle = fopen($_FILES['product_file']['tmp_name'], "r"); // 读取并忽略标题行 $data = fgetcsv($handle, 1000, ","); // 准备查询一次 $query = "UPDATE my_table SET date = ?, births = ? WHERE data_id = ?"; $stmt = $connect->prepare($query); // 循环遍历csv剩余的行 while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $stmt->bind_param('sss', $data[0],$data[1],$data[2]); $stmt->execute(); } fclose($handle); header("location: index.php?updation=1"); exit; // 重定向后一定要使用exit } else { $message = ''; } } else { $message = ''; } }
Nota: Saya menganggap kesemua 3 lajur adalah daripada jenis teks.
$stmt->bind_param('sss', $data[0],$data[1],$data[2]); ^^^
Jika date_id
是整数类型,您可以将其更改为'ssi'
,尽管3个s
biasanya berfungsi dengan baik juga.
Rujukan:
fgetcsv
mysqli_prepare
mysqli_bind_param