如何解決無法更新「日期列」的問題:更新MySQL資料庫表時如何正確上傳CSV文件
P粉529581199
2023-08-28 13:46:51
<p>我的程式碼中的主要問題是我無法使用php將csv檔案中的「date」更新到mysql資料庫表中。程式碼行$ date = mysqli_real_escape_string($ connect,$ data [1]);是這裡的主要問題。我正在尋找這個特定程式碼行的任何替代查詢。 </p>
<p>這是csv檔:https://drive.google.com/file/d/1EdMKo-XH7VOXS5HqUh8-m0uWfomcYL5T/view?usp=sharing</p>
<p>這是完整的程式碼:</p>
<pre class="brush:php;toolbar:false;"><?php
//index.php
$connect = mysqli_connect(“localhost”,“root”,“1234”,“ml_database”);
$message ='';
if(isset($ _POST [“upload”])){
if($ _FILES ['product_file'] ['name']){
$filename = explode(“。”,$ _FILES ['產品檔案'] ['名稱']);
if(end($檔名)==“csv”){
$handle = fopen($ _FILES ['product_file'] ['tmp_name'],「r」);
while($資料 = fgetcsv($句柄)){
$data_id = mysqli_real_escape_string($連接,$data[0]);
$date = mysqli_real_escape_string($connect,$data[1]); //我的問題
$births = mysqli_real_escape_string($連接,$資料[2]);
$query =“更新my_table
SET日期='$日期',
出生數='$出生數',
WHERE data_id ='$data_id'”;
mysqli_query($連接,$查詢);
}
fclose($句柄);
header(「位置:index.php?updation = 1”);
} else {
$message ='<label class =“text-danger”>請僅選擇CSV檔</label>';
}
} else {
$message ='<label class =“text-danger”>請選擇檔案</label>';
}
}
if(isset($ _GET [“updation”])){
$message ='<label class =“text-success”>產品更新完成</label>';
}
$query =“SELECT * FROM my_table”;
$result = mysqli_query($ connect,$ query);
?>
<!DOCTYPE html>
<html>
<head>
<title>透過使用PHP上傳CSV檔案更新Mysql資料庫</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>
<body>
<br />
<div class =“container”>
<h2 align =“center”>透過使用PHP上傳CSV檔案更新Mysql資料庫</a></h2>
<br />
<form method =“post” enctype ='multipart/form-data'>
<p><label>請選擇檔案(僅限CSV格式)</label>
<input type =“file” name =“product_file”/></p>
<br />
<input type =“submit” name =“upload” class =“btn btn-info” value =“上傳”/>
</form>
<br />
<?php echo $message; ?>
<h3 align =“center”>Birthss</h3>
<br />
<div class =“table-responsive”>
<table class =“table table-bordered table-striped”>
<tr>
<th>日期</th>
<th>出生</th>
</tr>
<?php
while($ row = mysqli_fetch_array($ result))
{
echo '
<tr>
<td>'.$row [“date”].'</td>
<td>'.$row [“births”].'</td>
</tr>
';
}
?>
</table>
</div>
</div>
</body>
</html></pre></p>
首先,您需要閱讀並丟棄CSV中的標題行。然後,使用適當的、準備好的和參數化的查詢,您可以正確地更新資料庫。由於.csv檔案中的日期格式正確,因此不需要進行任何操作,但是對於其他CSV檔案可能不是這種情況,通常需要在將日期正確儲存到表中之前對其進行重新格式化。
注意:我假設所有3列都是文字類型的。
如果
date_id
是整數類型,您可以將其變更為'ssi'
,儘管3個s
通常也能正常運作。參考資料:
#fgetcsv
#mysqli_prepare
#mysqli_bind_param