<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['제품_파일']['이름']){
$파일명 = 폭발(".”,$ _FILES ['제품_파일'] ['이름']);
if(end($ 파일 이름)==“csv”){
$handle = fopen($ _FILES ['product_file'] ['tmp_name'],“r”);
while($ 데이터 = fgetcsv($ 핸들)){
$data_id = mysqli_real_escape_string($connect,$data[0]);
$date = mysqli_real_escape_string($ 연결, $ 데이터 [1]); //나의 마음
$births = mysqli_real_escape_string($ 연결, $ 데이터 [2]);
$query =“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>
</머리>
<본문>
<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 에코 $메시지 ?>
<h3 align="center">생년월일</h3>
<br />
<div class="table-반응형">
<table class="table table-bordered table-striped">
<tr>
<일>날짜</일>
<th>출생</th>
</tr>
먼저 CSV의 헤더 행을 읽고 삭제해야 합니다. 그런 다음 적절하고 준비된 매개 변수화된 쿼리를 사용하여 데이터베이스를 올바르게 업데이트할 수 있습니다. .csv 파일의 날짜가 올바른 형식이므로 별도의 조치가 필요하지 않습니다. 그러나 테이블에 올바르게 저장하려면 날짜 형식을 다시 지정해야 하는 경우가 많은 다른 CSV 파일의 경우에는 그렇지 않을 수 있습니다.
으아악참고: 3개의 열이 모두 텍스트 유형이라고 가정합니다.
으아악만약
date_id
是整数类型,您可以将其更改为'ssi'
,尽管3个s
평소에도 잘 작동합니다.참조:
fgetcsv
mysqli_prepare
mysqli_bind_param