Php 获取sql查询的开始/结束时间

Php 获取sql查询的开始/结束时间,php,mysql,csv,Php,Mysql,Csv,我正在使用PHP将CSV解析为MySQL表 我的表“File”中有时间戳列,称为“StartTime”(文件解析的开始)、“EndTime”(文件解析的结束)和“CreationDate”(行创建的时间)。现在有什么办法可以得到这些时间?现在()是一个好的解决方案吗 我还有一个名为“Rows with errors”的列,它是其中有错误的行数,因此不会解析。如何检索CSV文件中出现错误的行数?(有错误的行可能是类型错误的行,例如:[varchar,int,timestamp,timestamp,

我正在使用PHP将CSV解析为MySQL表

  • 我的表“File”中有时间戳列,称为“StartTime”(文件解析的开始)、“EndTime”(文件解析的结束)和“CreationDate”(行创建的时间)。现在有什么办法可以得到这些时间?现在()是一个好的解决方案吗

  • 我还有一个名为“Rows with errors”的列,它是其中有错误的行数,因此不会解析。如何检索CSV文件中出现错误的行数?(有错误的行可能是类型错误的行,例如:[varchar,int,timestamp,timestamp,timestamp]]

  • 这是我的密码:

    function parse($file) { 
    
    $file_handle = fopen($file, "r"); //opens CSV
    while (($row = fgetcsv($file_handle, 1000, ",")) !== false){
    
    $file_name = basename($file);
    $Rows_with_errors = ?;
    $StartDate= date("Y-m-d H:i:s", time() ); //?
    $EndDate=?;
    $CreationDate=?;
    
    $sql = "INSERT INTO file (Filename, TotalNumberOfRows, RowsWithErrors, StartDate, EndDate, CreationDate) 
    VALUES('$file_name','$Total_nr_of_Rows', '$Rows_with_errors', '$StartDate', '$EndDate', '$CreationDate')";
    
    global $conn;
    $conn->query($sql); //executes the query
    }
    
    if ($sql)
        {
            echo 'Data uploaded to database!';
        }
    else {
            echo "Error: " . $sql . "<br>" . $conn->error;
    }
    }
    
    函数解析($file){
    $file_handle=fopen($file,“r”);//打开CSV
    while(($row=fgetcsv($file_handle,1000,“,”))!==false){
    $file\u name=basename($file);
    $Rows_,带_错误=?;
    $StartDate=日期(“Y-m-d H:i:s”,time());/?
    $EndDate=?;
    $CreationDate=?;
    $sql=“插入文件(文件名、TotalNumberOfRows、RowsWithErrors、StartDate、EndDate、CreationDate)
    值(“$file_name”、“$Total_nr_of_Rows”、“$Rows_with_errors”、“$StartDate”、“$EndDate”、“$CreationDate”);
    全球$conn;
    $conn->query($sql);//执行查询
    }
    如果($sql)
    {
    echo“数据上传到数据库!”;
    }
    否则{
    echo“Error:”.$sql.“
    ”$conn->Error; } }
    我从未运行过这个,希望它能起作用。解释在代码中

    <?php
    
    function parse($file) {
    
        //Initialize some variables here. Probably in some constants etc.
        $dateRegex = '|^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$|'; //Just a rough check. I purposely skip the case of like 9999-99-99 99:99:99. Up to you to refine this.
        $dateFormat = 'Y-m-d H:i:s';
    
        //In fact checking the file exist or not is probably useful too:
        //if (is_file($file)) ...
    
        //Opens CSV in read mode
        $file_handle = fopen($file, "r");
    
        //We don't need to put this in the loop since it's a one time job
        $file_name = basename($file);
    
        //We also initialize the variable outside the while loop so that we can increment it
        $Rows_with_errors = 0;
        $Total_nr_of_Rows = 0;
    
        //StartDate of the parsing, shouldn't it be outside of the while loop too?
        //Also, using "date" will gives you the time in the timezone that you set in your php.ini's date.timezone property.
        //Using "gmdate" will gives you the time in GMT time.
        $StartDate = date($dateFormat, time());
    
        while (($row = fgetcsv($file_handle, 1000, ",")) !== false) {
    
            ++$Total_nr_of_Rows;
    
            //So here, we are looping row by row. Do your checking here:
            if (!(is_string($row[0]) &&
                is_numeric($row[1]) &&
                preg_match($dateRegex, $row[2]) &&
                preg_match($dateRegex, $row[3]) &&
                preg_match($dateRegex, $row[4]))) {
    
                    //Increment the error
                    ++$Rows_with_errors;
            }
        }
    
        //That's it. We insert it now
        //Creation date & end date, probably the same, no? we initialize here:
        $CreationDate = $EndDate = date($dateFormat, time());
    
        //This is bad. There is no escaping, and YOU ARE RISK OF QUERY INJECTION FROM THE $file_name VARIABLE.
        //I won't discuss it here since this is not the scope of the question.
        $sql = "INSERT INTO file (Filename, TotalNumberOfRows, RowsWithErrors, StartDate, EndDate, CreationDate) 
    VALUES('$file_name','$Total_nr_of_Rows', '$Rows_with_errors', '$StartDate', '$EndDate', '$CreationDate')";
    
        global $conn;
        $conn->query($sql); //executes the query
    
        if ($sql){
            echo 'Data uploaded to database!';
        }else {
            echo "Error: " . $sql . "<br>" . $conn->error;
        }
    }