使用更新插入查询将.csv值插入数据库


inserting .csv values to database with an update insert query

我有一个。csv文件,它的数据被插入到数据库中,但我的代码有一个缺点,如

如果我的。csv文件包含一行,它插入到数据库中,然后插入更多的行,用户应该从。csv中删除第一行,并放入新的行值,然后它将插入其他重复的键条目作为我的数据库中具有唯一键的列。

我的代码插入。csv到mysql.

<?php
//db connection goes here
$csv_file="/var/www/html/141.csv";
 $savefile="141.csv";
  $handle = fopen($csv_file, "r");
$i=0;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if($i>0){
$import="INSERT into  lead141(urn,phone)values('".addslashes($data[0])."','".addslashes($data[1])."')";
mysql_query($import) or die(mysql_error());
}
$i=1;
}
$test="select * from lead141
where phone in (select phone from dnc)";
$query=mysql_query($test);
$testing=count($query);
echo "matched rows".$testing; 
?>   

my mysql lead141 table structure

    CREATE TABLE `lead141` (
 id int(100) NOT NULL AUTO_INCREMENT,
 urn int(100) NOT NULL,
 phone bigint(20) NOT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `phone` (`phone`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1

my 141.csv file

urn    phone
141     20134325
141     20985675

如果我运行我的代码141.csv插入到数据库中,但当用户在141.csv中添加新行时,用户应该删除以前的行并添加新行到141.csv中以插入。

我需要使我的代码工作,以插入新的值从141.csv到db即使旧值存在于。csv。我想如果我放一个update语句,然后插入,它就会成功。

我是否进入了逻辑的正确路径?请帮助

尝试使用INSERT…ON DUPLICATE KEY UPDATE语法:

$import="INSERT INTO lead141(urn,phone)values('".addslashes($data[0])."','".addslashes($data[1])."') ON DUPLICATE KEY UPDATE phone= '".addslashes($data[1])."'";

因为phone列是UNIQUE KEY

您也可以使用INSERT IGNORE INTO ...,但我更喜欢ON DUPLICATE KEY UPDATE ...功能,因为:

"插入IGNORE"vs "INSERT…ON DUPLICATE KEY UPDATE"