Php 如何在mysql的每一行中插入文件名作为值?

Php 如何在mysql的每一行中插入文件名作为值?,php,mysql,Php,Mysql,在我的trend_表中有这个结构,我正在将一个csv文件上传到mysql服务器。我想将我的文件名插入每行的日期。如何将文件名作为我的date\u列的值 示例2018-10-02\u trx\u result.csv是我的文件名,因此当我上传我的csv时,2018-10-02应该放在每一行中 date_sourced : date sha1: varchar(255) vsdt: varchar(255) trendx:varchar(255) notes:varchar(255) 用于上载我的

在我的trend_表中有这个结构,我正在将一个csv文件上传到mysql服务器。我想将我的文件名插入每行的日期。如何将文件名作为我的
date\u
列的值

示例
2018-10-02\u trx\u result.csv
是我的文件名,因此当我上传我的csv时,
2018-10-02
应该放在每一行中

date_sourced : date
sha1: varchar(255)
vsdt: varchar(255)
trendx:varchar(255)
notes:varchar(255)
用于上载我的CSV的PHP代码

<?php
if(isset($_POST['submit'])) {
    $host = 'localhost';
    $user = 'root';
    $password = '';
    $db = 'jeremy_db';
    ini_set('max_execution_time', 500);
    $con = mysqli_connect($host,$user,$password) or die('Could not' .mysqli_error($con));

    mysqli_select_db($con, $db) or die ('Could not' .mysqli_error($con));

    $file = $_FILES['file']['tmp_name'];
    $handle = fopen($file, "r");
    ini_set ('memory_limit', filesize ($file) + 4000000);
    $c = 0;

    while(($csvdata = fgetcsv($handle,10000,","))!== FALSE){
        $sha1 = $csvdata[0];
        $vsdt = $csvdata[1];
        $trendx  = $csvdata[2];

        $sql = "INSERT INTO jeremy_table_trend (sha1,vsdt,trendx) VALUES ('$sha1','$vsdt','$trendx')";
        $query = mysqli_query($con , $sql);

        $c = $c+1;
    }
    if($query){
        echo '<script type="text/javascript">'; 
        echo '      alert("CSV uploaded to server");'; 
        echo '      window.location.href = "trendx.php";';
        echo '</script>';
    }
    else { 
        echo "SLAM";
    }
}
?>

如果您的文件名的格式为
2018-10-02_trx_result.csv
(即日期后跟
\uu
和名称的其余部分),您可以使用以下方法提取日期部分:

然后,您可以编辑查询以包含
$date
的值:

$sql = "INSERT INTO jeremy_table_trend (date,sha1,vsdt,trendx) 
        VALUES ('$date','$sha1','$vsdt','$trendx')";

请注意,您确实应该使用准备好的语句来防止(例如)数据值中包含单引号以及其他可能的SQL注入攻击。看。

你可以这样做

$date = explode("_", !real filename here!)[0];

您可以直接在sql语句中插入
$date
。还要确保文件中的日期格式始终为
YYYY-MM-DD

那么,您到底面临什么问题呢?如何将文件名作为我的日期列的值这在我的每一行中给出0000-00-00,听起来您的文件名与您提到的格式不符,或者可能有路径?如果您尝试
list($date)=分解('''u',basename($'u FILES['file']['name']),会发生什么情况
你能回显一下
$\u文件['file']['name']
看看里面有什么吗?(T\u加上空格,应该是“-”或标识符(T\u字符串)或变量(T\u变量)或数字(T\u NUM\u字符串)哦,对不起,我很抱歉,谢谢!我使用的是另一个路径,我忘了:)很高兴看到它工作了-你需要
basename
?如果是这样,我会更新答案。
$sql = "INSERT INTO jeremy_table_trend (date,sha1,vsdt,trendx) 
        VALUES ('$date','$sha1','$vsdt','$trendx')";
$date = explode("_", !real filename here!)[0];