Maison > Questions et réponses > le corps du texte
P粉8173547832023-08-29 00:13:45
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"); // 读取并忽略标题行 $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 = ''; } }
Remarque : je suppose que les 3 colonnes sont de type texte.
$stmt->bind_param('sss', $data[0],$data[1],$data[2]); ^^^
Ifdate_id
是整数类型,您可以将其更改为'ssi'
,尽管3个s
fonctionne généralement bien aussi.
Référence :
fgetcsv
mysqli_prepare
mysqli_bind_param