Tout d’abord, vous devez lire et supprimer la ligne d’en-tête dans le CSV. Ensuite, à l’aide de requêtes appropriées, préparées et paramétrées, vous pouvez mettre à jour correctement la base de données. étant donné que les dates du fichier .csv sont au format correct, aucune action n'est requise, mais cela peut ne pas être le cas avec d'autres fichiers CSV, où les dates doivent souvent être reformatées avant de pouvoir être stockées correctement dans le tableau.
<?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"); // 讀取并忽略標(biāo)題行 $data = fgetcsv($handle, 1000, ","); // 準(zhǔn)備查詢一次 $query = "UPDATE my_table SET date = ?, births = ? WHERE data_id = ?"; $stmt = $connect->prepare($query); // 循環(huán)遍歷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 = ''; } }
Remarque?: je suppose que les 3 colonnes sont de type texte.
$stmt->bind_param('sss', $data[0],$data[1],$data[2]); ^^^
Ifdate_id
是整數(shù)類型,您可以將其更改為'ssi'
,盡管3個s
fonctionne généralement bien aussi.
Référence :