Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用更新插入查询将.csv值插入数据库_Php_Mysql_Csv - Fatal编程技术网

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

Php 使用更新插入查询将.csv值插入数据库,php,mysql,csv,Php,Mysql,Csv,我有一个.csv文件,其中的数据被插入到数据库中,但我的代码有一个缺点,比如 如果my.csv文件包含一行及其在数据库中插入的行,则要插入更多行,用户应从.csv中删除该第一行并输入新行值,然后它将插入else duplicate key entry,作为my db中具有唯一键的列 将.csv插入mysql的代码 <?php //db connection goes here $csv_file="/var/www/html/141.csv"; $savefile="141.csv";

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

如果my.csv文件包含一行及其在数据库中插入的行,则要插入更多行,用户应从.csv中删除该第一行并输入新行值,然后它将插入else duplicate key entry,作为my db中具有唯一键的列

将.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; 

?>   
我的141.csv文件

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

我需要使我的代码能够将新值从141.csv插入到db,即使旧值存在于.csv中。我认为如果我放入一个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 to…
,但我更喜欢
ON DUPLICATE KEY UPDATE…
功能,因为:


为什么不改为使用?使用
替换
|
忽略
作为合适的朋友,在3年前,我在DNC系统上工作。当时我使用PhoneNumber作为Bigint数据类型的主键。这样就不需要使用unique键。实际上,我在这里缩短了我的列列表。
$import="INSERT INTO lead141(urn,phone)values('".addslashes($data[0])."','".addslashes($data[1])."') ON DUPLICATE KEY UPDATE phone= '".addslashes($data[1])."'";