簡體   English   中英

如何在MYSQL中使用STR_TO_DATE和INSERT INTO

[英]How to use STR_TO_DATE with INSERT INTO in MYSQL

我想要做的是在我的數據庫中導入CSV文件。 CSV文件的第一列(名為mydate包含此格式的日期mdY H:i:s 我正在嘗試從php中的表單插入文件。 這是代碼:

if(isset($_POST["Import"])){

    $filename=$_FILES["file"]["tmp_name"];
    if($_FILES["file"]["size"] > 0){

        $file = fopen($filename, "r");
        while (($getData = fgetcsv($file, 10000, ",")) !== FALSE){

            $conn=getdb();

            $sql = "INSERT into pay (Mydata,ID,Transaction,ReceiptNo,ServiceID,) 
                     values (STR_TO_DATE(Mydata, '%m.%d.%Y %H:%i:%s'),'".$getData[1]."','".$getData[2]."','".$getData[3]."','".$getData[4]."')";

它導入除第一列之外的所有列中的數據。 我無法理解我做錯了什么。 我在STR_TO_DATEINSERT INTO看到了很多例子,我認為我寫它的方式是正確的。 但仍然行不通。

你可以這樣做

$sql = "INSERT into pay (Mydata,ID,Transaction,ReceiptNo,ServiceID,) 
 values (date('m/d/Y H:i:s', strtotime(MyData)),'".$getData[1]."','".$getData[2]."','".$getData[3]."','".$getData[4]."')";

我通過使用LOAD DATA INFILE解決了這個問題。

這是我使用的代碼:

if(isset($_POST["Import"])){        
    $filename=str_replace("\\", "/", $_FILES["file"]["tmp_name"]);
    if($_FILES["file"]["size"] > 0){                 
        $conn=getdb();               
        $sql = "LOAD DATA LOCAL INFILE '".$filename."'
                INTO TABLE pay
                FIELDS OPTIONALLY ENCLOSED BY '\"' TERMINATED BY ','
                LINES TERMINATED BY '\\n'
                (@Mydata,ID,Transaction,ReceiptNo,ServiceID)
                SET Mydata = STR_TO_DATE( @Mydata, '%m.%d.%Y %H:%i:%s')";
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM