Bagaimana untuk menyelesaikan masalah tidak dapat mengemas kini "Lajur Tarikh": Bagaimana untuk memuat naik fail CSV dengan betul semasa mengemas kini jadual pangkalan data MySQL
P粉529581199
2023-08-28 13:46:51
<p>Masalah utama dalam kod saya ialah saya tidak boleh mengemas kini "tarikh" daripada fail csv ke dalam jadual pangkalan data mysql menggunakan php. Baris kod $date = mysqli_real_escape_string($connect, $data[1]); Saya sedang mencari sebarang pertanyaan alternatif untuk baris kod tertentu ini. </p>
<p>Ini ialah fail csv: https://drive.google.com/file/d/1EdMKo-XH7VOXS5HqUh8-m0uWfomcYL5T/view?usp=sharing</p>
<p>Ini ialah kod lengkap: </p>
<pre class="brush:php;toolbar:false;"><?php
//index.php
$connect = mysqli_connect("localhost","root","1234","ml_database");
$mesej ='';
if(isset($_POST["muat naik"))){
if($_FILES['product_file']['name']){
$nama fail = meletup(".”,$ _FAIL ['fail_produk'] ['nama']);
if(end($ nama fail)==“csv”){
$handle = fopen($ _FILES ['product_file'] ['tmp_name'],“r”);
manakala($ data = fgetcsv($ pemegang)){
$data_id = mysqli_real_escape_string($ connect,$ data [0]);
$tarikh = mysqli_real_escape_string($ connect,$ data [1]); //我的问题
$births = mysqli_real_escape_string($ connect,$ data [2]);
$query = “KEMASKINI my_table
SET tarikh ='$ tarikh',
kelahiran ='$ kelahiran',
WHERE data_id ='$ data_id'”;
mysqli_query($ connect,$ query);
}
fclose($ pemegang);
pengepala(“lokasi:index.php?kemas kini = 1”);
} lain {
$message ='<label class="text-danger">Sila pilih hanya fail CSV</label>';
}
} lain {
$message ='<label class="text-danger">Sila pilih fail</label>';
}
}
if(isset($_GET["kemas kini"])){
$message ='<label class="text-success">Kemas kini produk selesai</label>';
}
$query = "PILIH * DARI my_table";
$result = mysqli_query($connect, $query);
?>
<!DOCTYPE html>
<html>
<kepala>
<title>Kemas kini pangkalan data Mysql dengan memuat naik fail CSV menggunakan 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>
</head>
<badan>
<br />
<div class="container">
<h2 align="center">Kemas kini pangkalan data Mysql dengan memuat naik fail CSV menggunakan PHP</a></h2>
<br />
<form method="post" enctype='multipart/form-data'>
<p><label>Sila pilih fail (format CSV sahaja)</label>
<jenis input = nama “fail” = “fail_produk”/></p>
<br />
<jenis input = “serahkan” nama = “muat naik” kelas = “btn btn-info” nilai = “muat naik”/>
</form>
<br />
<?php echo $message ?>
<h3 align="center">Kelahiran</h3>
<br />
<div class="table-responsive">
<table class="table table-bordered table-striped">
<tr>
<th>Tarikh</th>
<th>Lahir</th>
</tr>
<?php
while($row = mysqli_fetch_array($result))
{
bergema '
<tr>
<td>'.$row ["tarikh"].'</td>
<td>'.$row ["kelahiran"].'</td>
</tr>
';
}
?>
</table>
</div>
</div>
</badan>
</html></pre></p>
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.
Nota: Saya menganggap kesemua 3 lajur adalah daripada jenis teks.
Jika
date_id
是整数类型,您可以将其更改为'ssi'
,尽管3个s
biasanya berfungsi dengan baik juga.Rujukan:
fgetcsv
mysqli_prepare
mysqli_bind_param