我想将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);
}
答案 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层来为您解决这一问题。