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

plupiseo  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(235)

我的趋势表中有这个结构,我正在上传一个csv文件到mysql服务器。我想把我的文件名插入每行的源日期。如何将文件名作为 date_sourced
例子 2018-10-02_trx_result.csv 我的文件名是这样的吗 2018-10-02 当我上传我的csv时,应该为每一行放置

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";
    }
}
?>

html代码:

<form id = "myForm" class="ui input" enctype="multipart/form-data" method = "POST" action="trend_upload_csv.php" role = "form">
     <input type = "file" name ="file" id="file" size = "150">
     <input id="myBtn"  class="ui small red button" type = "submit" class = "btn btn-default"  name ="submit" onclick = "myFunction();" value = "Upload CSV"  disabled  /> 
</form>

请帮助我,我不知道如何修剪文件名并将文件名插入mysql:(

im9ewurl

im9ewurl1#

你可以这样做,

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

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

bsxbgnwa

bsxbgnwa2#

如果文件名的格式 2018-10-02_trx_result.csv (即日期后跟 _ 以及名称的其余部分),您可以使用 explode :

list($date) = explode('_', $_FILES['file']['name']);

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

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

请注意,您应该真正使用prepared语句来防范(例如)数据值中包含单引号以及其他可能的sql注入攻击。看看这个答案。

相关问题