「日付列」が更新できない問題の解決方法: MySQL データベースのテーブル更新時に CSV ファイルを正しくアップロードする方法
P粉529581199
2023-08-28 13:46:51
<p>私のコードの主な問題は、php を使用して csv ファイルから 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");
$メッセージ = '';
if(isset($_POST["アップロード"])){
if($_FILES['製品ファイル']['名前']){
$ファイル名 =explode(".”,$ _FILES ['製品ファイル'] ['名前']);
if(end($ファイル名)==“csv”){
$handle = fopen($ _FILES ['製品ファイル'] ['tmp_name'],“r”);
while($ データ = fgetcsv($ ハンドル)){
$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 ="UPDATE my_table
SET 日付 ='$ 日付'、
出生 ='$ 出生'、
WHERE data_id ='$ data_id'”;
mysqli_query($接続,$クエリ);
}
fclose($ハンドル);
ヘッダー(「場所:index.php?更新 = 1”);
} それ以外 {
$message ='<label class="text-danger">CSV ファイルのみを選択してください</label>';
}
} それ以外 {
$message ='<label class="text-danger">ファイルを選択してください</label>';
}
}
if(isset($_GET["アップデート"])){
$message ='<label class="text-success">製品の更新が完了しました</label>';
}
$query = "SELECT * FROM my_table";
$result = mysqli_query($connect, $query);
?>
<!DOCTYPE html>
<html>
<頭>
<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>
<本体>
<br />
<div class="コンテナ">
<h2 align="center">PHP を使用して CSV ファイルをアップロードして MySQL データベースを更新します</a></h2>
<br />
<form method="post" enctype='multipart/form-data'>
<p><label>ファイルを選択してください(CSV形式のみ)</label>
<入力タイプ = "ファイル" 名前 = "製品ファイル"/><</p>
<br />
<入力タイプ = "送信" 名前 = "アップロード" クラス = "btn btn-info" 値 = "アップロード"/>
</フォーム>
<br />
<?php echo $message; ?>
<h3 align="center">誕生</h3>
<br />
<div class="テーブルレスポンシブ">
<テーブルクラス="テーブル テーブルボーダー テーブルストライプ">
<tr>
日付 |
誕生 |
</tr>
<?php
while($row = mysqli_fetch_array($result))
{
エコー '
<tr>
<td>'.$row ["日付"].'</td>
<td>'.$row ["誕生"].'</td>
</tr>
';
}
?>
</テーブル>
</div>
</div>
</ボディ>
</html></pre></p>
まず、CSV のヘッダー行を読み取って破棄する必要があります。その後、適切に準備され、パラメーター化されたクエリを使用して、データベースを正しく更新できます。 .csv ファイル内の日付は正しい形式であるため、何もする必要はありませんが、他の CSV ファイルには当てはまらない場合があり、多くの場合、日付をテーブルに正しく保存するには、日付を再フォーマットする必要があります。
リーリー注: 3 つの列はすべてテキスト型であると仮定します。
リーリーdate_id
が整数型の場合は、'ssi'
に変更できますが、通常は 3s
でも問題ありません。fgetcsv
mysqli_prepare
mysqli_bind_param