>  Q&A  >  본문

"날짜 열"을 업데이트할 수 없는 문제를 해결하는 방법: MySQL 데이터베이스 테이블을 업데이트할 때 CSV 파일을 올바르게 업로드하는 방법

<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>
P粉529581199P粉529581199419일 전502

모든 응답(1)나는 대답할 것이다

  • P粉817354783

    P粉8173547832023-08-29 00:13:45

    먼저 CSV의 헤더 행을 읽고 삭제해야 합니다. 그런 다음 적절하고 준비된 매개 변수화된 쿼리를 사용하여 데이터베이스를 올바르게 업데이트할 수 있습니다. .csv 파일의 날짜가 올바른 형식이므로 별도의 조치가 필요하지 않습니다. 그러나 테이블에 올바르게 저장하려면 날짜 형식을 다시 지정해야 하는 경우가 많은 다른 CSV 파일의 경우에는 그렇지 않을 수 있습니다.

    으아악

    참고: 3개의 열이 모두 텍스트 유형이라고 가정합니다.

    으아악

    만약 date_id是整数类型,您可以将其更改为'ssi',尽管3个s 평소에도 잘 작동합니다.

    참조:

    fgetcsv
    mysqli_prepare
    mysqli_bind_param

    회신하다
    0
  • 취소회신하다