将CSV插入MySQL

时间:2018-11-21 10:03:23

标签: php mysql csv

我想将CSV插入MySQL。仅当MySQL表中存在列sha1时,才如何更新我的表?如果存在列sha1,请将其插入。

我有以下代码可插入csv:

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

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

        $c = $c+1;
        error_reporting(E_ALL ^ E_NOTICE);
    }
    $i++;
    error_reporting(E_ALL ^ E_NOTICE);
}

2 个答案:

答案 0 :(得分:1)

选中此项,这可能会对您有所帮助

<?php
while(($csvdata = fgetcsv($handle,10000,","))!== FALSE){
    if($i>0) {
        $sha1 = $csvdata[0];
        $vsdt = $csvdata[1];
        $trendx  = $csvdata[2];
        $notes  = $csvdata[3];

        // Get record where sha1 
        $check_sha = "SELECT sha1 FROM jeremy_table_trend WHERE sha1='".$sha1."'";
        $check_shaquery = mysqli_query($con , $check_sha);
        if($check_shaquery){
            $sha_count = mysqli_num_rows($check_shaquery);
        }

        // Check if sha1 already in database
        if(isset($sha_count) && $sha_count>0){
            $sql = "UPDATE `jeremy_table_trend` SET `date_sourced`='".$date."',`sha1`='".$sha1."',`vsdt`='".$vsdt."',`trendx`='".$trendx."',`notes`='".$notes."' WHERE sha1='".$sha1."'";
            $query = mysqli_query($con , $sql);
        }else{
            $sql = "INSERT INTO jeremy_table_trend (date_sourced,sha1,vsdt,trendx,notes) VALUES ('$date','$sha1','$vsdt','$trendx','$notes')";
            $query = mysqli_query($con , $sql);
        }

        $c = $c+1;
        error_reporting(E_ALL ^ E_NOTICE);
    }
    $i++;
    error_reporting(E_ALL ^ E_NOTICE);
}
?>

答案 1 :(得分:1)

请,这是2018年。不再需要程序性低级代码。看看像Spout这样的库来读取CSV并使用PDO进行对数据库的面向对象访问。

我假设列document.getElementsByName('fruit')[0].addEventListener('change', function(e) { let options = ""; for(obj of prices[this.value]) { options += '<option value="' +obj.value +'">' +obj.desc +'</option>'; } document.getElementsByName('price')[0].innerHTML = options; }); 设置了sha1索引?如果没有,它应该。然后,您可以使用INSERT ... ON DUPLICATE KEY UPDATE语法在一个简洁的SQL语句中完成此操作:

UNIQUE

除了检查数据库中是否存在具有相同哈希值的条目外,您还可以使用ORM层来为您解决这一问题。