Comment résoudre le problème de l'impossibilité de mettre à jour la "Colonne de date" : Comment télécharger correctement un fichier CSV lors de la mise à jour d'une table de base de données MySQL
P粉529581199
2023-08-28 13:46:51
<p>Le principal problème dans mon code est que je ne peux pas mettre à jour la "date" du fichier csv dans la table de la base de données mysql à l'aide de php. La ligne de code $date = mysqli_real_escape_string($connect, $data[1]); est le principal problème ici. Je recherche une requête alternative pour cette ligne de code particulière. </p>
<p>Voici le fichier csv : https://drive.google.com/file/d/1EdMKo-XH7VOXS5HqUh8-m0uWfomcYL5T/view?usp=sharing</p>
<p>Voici le code complet : </p>
<pre class="brush:php;toolbar:false;"><?php
//index.php
$connect = mysqli_connect("localhost","root","1234","ml_database");
$message ='';
if(isset($_POST["upload"])){
si($_FILES['product_file']['name']){
$filename = exploser(".”,$ _FILES ['fichier_produit'] ['nom']);
if(end($ filename)==“csv”){
$handle = fopen($ _FILES ['product_file'] ['tmp_name'],“r”);
while($ data = fgetcsv($ handle)){
$data_id = mysqli_real_escape_string($ connect,$ data [0]);
$date = mysqli_real_escape_string($ connect,$ data [1]); //我的问题
$births = mysqli_real_escape_string($ connect,$ data [2]);
$query = « METTRE À JOUR ma_table
DÉFINIR la date = '$ date',
naissances ='$ naissances',
OÙ data_id ='$ data_id'";
mysqli_query($connect,$requête);
}
fclose($ handle);
en-tête(«emplacement:index.php?mise à jour = 1");
} autre {
$message ='<label class="text-danger">Veuillez sélectionner uniquement les fichiers CSV</label>';
}
} autre {
$message ='<label class="text-danger">Veuillez sélectionner le fichier</label>';
}
}
if(isset($_GET["mise à jour"])){
$message ='<label class="text-success">Mise à jour du produit terminée</label>';
}
$query = "SELECT * FROM ma_table";
$result = mysqli_query($connect, $query);
?>
<!DOCTYPE html>
<html>
<tête>
<title>Mettez à jour la base de données Mysql en téléchargeant un fichier CSV à l'aide de PHP</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"/>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
≪/tête>
<corps>
<br />
<div class="conteneur">
<h2 align="center">Mettez à jour la base de données Mysql en téléchargeant un fichier CSV à l'aide de PHP</a></h2>
<br />
<form method="post" enctype='multipart/form-data'>
<p><label>Veuillez sélectionner un fichier (format CSV uniquement)</label>
<type d'entrée = nom "fichier" = "fichier_produit"/></p>
<br />
<type d'entrée = « soumettre » nom = « télécharger » classe = « btn btn-info » valeur = « télécharger »/>
</formulaire>
<br />
<?php echo $message?>
<h3 align="center">Naissances</h3>
<br />
<div class="table-responsive">
<table class="table table bordée table-rayée">
<tr>
<th>Date</th>
<th>Naissance</th>
≪/tr>
<?php
while($row = mysqli_fetch_array($result))
{
écho '
<tr>
<td>'.$row ["date"].'</td>
<td>'.$row ["naissances"].'</td>
≪/tr>
';
}
?>
</tableau>
</div>
</div>
</corps>
</html></pre></p>
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.
Remarque : je suppose que les 3 colonnes sont de type texte.
If
date_id
是整数类型,您可以将其更改为'ssi'
,尽管3个s
fonctionne généralement bien aussi.Référence :
fgetcsv
mysqli_prepare
mysqli_bind_param