Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在MYSQL中使用STR_to_DATE和INSERT-INTO_Php_Mysql_Csv - Fatal编程技术网

Php 如何在MYSQL中使用STR_to_DATE和INSERT-INTO

Php 如何在MYSQL中使用STR_to_DATE和INSERT-INTO,php,mysql,csv,Php,Mysql,Csv,我想做的是在我的数据库中导入一个CSV文件。CSV文件的第一列名为mydate,包含此格式的日期m.d.Y H:i:s。我正在尝试从php中的表单插入文件。代码如下: if(isset($_POST["Import"])){ $filename=$_FILES["file"]["tmp_name"]; if($_FILES["file"]["size"] > 0){ $file = fopen($filename, "r"); while

我想做的是在我的数据库中导入一个CSV文件。CSV文件的第一列名为
mydate
,包含此格式的日期
m.d.Y 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\u-TO\u-DATE
INSERT-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]."')";

我用电脑解决了这个问题

以下是我使用的代码:

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')";
    }
}

STR_TO_DATE(我的数据,'%m.%d.%Y%H:%i:%s')
?我认为您必须给出一个日期字符串,而不是
Mydata
,然后将其转换为php并在查询中传递变量。试过了吗?@AlivetoDie在一些教程中,我发现我可以把专栏的名字放在那里。如果我在mysql中使用它,它就会工作workbench@DanyalSandeelo如何将其转换为php?
STR_TO_DATE(NOW(),“%m.%d.%Y%H:%i:%s”)
使用它并检查我将strotime设置为如下值(DATE('m.d.Y H:i:s',strotime(Mydata)),“$getData[1]”,“$getData[2]”,“$getData[3]”,“$getData[4]”)现在它显示了这个错误:Uncaught mysqli\u sql\u异常:您的sql语法有错误;查看与您的MariaDB服务器版本相对应的手册,以了解可使用的正确语法“strotime(Mydata)),Mydata应该是一个保存csv中单元格值的变量$Mydata='CSVCellthattholdshedate';然后使用date(date('m/d/Y H:i:s',strottime($MyData)),类似这样的用法:$Mydata1=$getData[0];?我现在更改了我的代码:
$dataime1=$getData[0];…..值(date('m.d.Y H:i:s',strottime($Mydata1)),“$getData[2]”,“,“$g”)‌​etData[3]。“,”。“$get‌​数据[4]。“”)
但它仍然会向我发送类似以下未捕获的mysqli_sql_异常的错误:您的sql语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在“strotime(04.13.2017 23:59)),“1…做得好,但是你的大部分解决方案和解释都属于你的答案,而不是问题。请删除您的问题更新,并在答案中提供您的信息性解决方案。感谢您努力自我解决并向社区提供答案——这太棒了,所以我刚刚删除了更新并将解决方案放入了答案中。非常感谢您的帮助。我已经编辑了您的答案,为您的
LOAD DATA infle
语句提供了一个链接。在实施此解决方案时,您是否有任何有用的提示或遇到的困难?这些类型的添加可以节省未来,所以研究人员需要大量的时间和心痛。如果您有更多属于这些嵌套条件块内部的函数,它可能会帮助将来的读者查看完整的查询过程,包括错误检查和受影响的_行检查。一个全面的答案能提供最好的教育,从长远来看会为你赢得更多的选票。while循环到哪里去了?我很好奇您是否在进行连续的INSERT查询,因为如果是这样的话,最好构建一个包含多行值的大型长INSERT,然后只查询一次。请显示更多的代码,以便我可以看到它是如何工作的。@mickmackusa我只做一个插入查询,因为我每天只需要以给定的格式插入数据一次。