php读取csv更新mysql_php-将CSV导入MySql,如果重复,则更新所选值

这篇博客介绍如何使用PHP从CSV文件导入数据到MySQL数据库,并在遇到重复记录时仅更新选定字段。博主提到在导入前检查重复项,且在插入数据时使用`addslashes()`函数,同时讨论了可能的替代方案,如使用`mysql_real_escape_string()`。文章还提到了`mysql_`函数的过时问题,建议转向mysqli。
摘要由CSDN通过智能技术生成

我正在尝试将一个csv文件导入到mysql-databse中,并且我希望uploadscript检查重复项,如果发现有任何重复,则应该更新该行,但只能更新选定的值.我希望它更新除“首次看到”以外的所有值. bssid是我唯一的标识.我也得到一些建议,我应该将“ addslashes”更改为一些更好的代码,但是我不知道哪种方法是最好的做法,有什么建议吗?

//Count ap´s before import

$before = mysql_query("SELECT * FROM wifi");

$num_rows_before = mysql_num_rows($before);

if ($_FILES[csv][size] > 0) {

//get the csv file

$file = $_FILES[csv][tmp_name];

$handle = fopen($file,"r");

//loop through the csv file and insert into database

do {

if ($data[0]) {

$linesCount ++;

mysql_query("INSERT INTO wifi (bssid, channel, privacy, ciper, auth, power, essid, latitude, longitude, first_seen, last_seen) VALUES

(

'".addslashes($data[0])."',

'".addslashes($data[1])."',

'".addslashes($data[2])."',

'".addslashes($data[3])."',

'".addslashes($data[4])."',

'".addslashes($data[5])."',

'".addslashes($data[6])."',

'".addslashes($data[7])."',

'".addslashes($data[8])."',

'".addslashes($data[9])."',

'".addslashes($data[10])."'

)

");

}

} while ($data = fgetcsv($handle,1000,","));

//redirect

header('Location: index.php/ladda-upp?success=1&before=' . $num_rows_before); die;

}

//Catch argument from url

$arg_bef=$_GET['before'];

//Count ap´s after import

$after = mysql_query("SELECT * FROM wifi");

$num_rows_after = mysql_num_rows($after);

//Count new rows

$new_rows = $num_rows_after - $arg_bef;

//generic success notice

if (!empty($_GET[success])) { echo "Resultat: Din fil har blivit importerad!
";

//echo stats

echo "Antal före import - ";

echo "$arg_bef";

echo "
";

echo "Antal efter import - ";

echo "$num_rows_after";

echo "
";

echo "Antal nya rader - ";

echo "$new_rows";

echo "
";

echo "Rader i CSV-fil - ";

}

//Close connection to databse

mysql_close($connect) ;

?>

解决方法:

您想要mysql的重复键功能

确保在CSV中显示的字段上设置了密钥,例如:bssid可能有效.

不用addslashes()来使用mysql_real_escape_string(),但是毫无疑问,有人会指出mysql_函数已被弃用,并将很快被删除,因此您至少应使用mysqli.

标签:mysql,php

来源: https://codeday.me/bug/20191123/2065083.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值