Php 将CSV插入MySQL
我想在MySQL中插入一个CSV。如果MySQL表中存在列Php 将CSV插入MySQL,php,mysql,csv,Php,Mysql,Csv,我想在MySQL中插入一个CSV。如果MySQL表中存在列sha1,我如何才能更新我的表?如果列sha1存在,请插入它 我要插入csv的代码: while(($csvdata = fgetcsv($handle,10000,","))!== FALSE){ if($i>0) { $sha1 = $csvdata[0]; $vsdt = $csvdata[1]; $trendx = $csvdata[2]; $note
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);
}
检查一下这个,这可能对你有帮助
<?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);
}
?>
检查此项,这可能会对您有所帮助
<?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);
}
?>
请,这是2018年。不再需要过程性的低级代码。看一看类似于读取CSV并用于面向对象访问数据库的库
我假设列sha1
有一个UNIQUE
索引集?如果没有,它应该这样做。然后,您可以在一个简洁的SQL语句中使用以下语法执行此操作:
除了检查数据库中是否存在具有相同哈希值的条目外,还可以使用ORM层为您解决这个问题 请,这是2018年。不再需要过程性的低级代码。看一看类似于读取CSV并用于面向对象访问数据库的库
我假设列sha1
有一个UNIQUE
索引集?如果没有,它应该这样做。然后,您可以在一个简洁的SQL语句中使用以下语法执行此操作:
除了检查数据库中是否存在具有相同哈希值的条目外,还可以使用ORM层为您解决这个问题 不使用参数格式化SQL,使用准备好的语句并传入参数,这将确保正确转义和格式化参数。不使用参数格式化SQL,使用准备好的语句并传入参数,这将负责正确转义和格式化参数。请注意,此代码容易出现SQL注入和非常糟糕的编码样式。请注意,此代码容易出现SQL注入和非常糟糕的编码样式。错误消息是什么?您是否在列“sha1”上设置了唯一索引?它需要有索引才能使查询工作。错误消息是什么?您是否在列“sha1”上设置了唯一索引?它需要有索引才能进行查询。