导入数据如何避免重复? 将name连接content的组合字符串md5加密后放到数组中,如果已经存在了,那么就将该项数据从数据中删除 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $excelData = array( array('张三', '吃饭'), array('李四', '吃饭'), array('张三', '喝水'), array('李四', '吃饭'),// 重复 array('张三', '喝水') // 重复);$ = array(); // 用来当作唯一标识foreach ($excelData as $key => $arr) { $md5Mark = md5($arr[0] . $arr[1]); if (isset($[$md5Mark])) { unset($excelData[$key]); } else { $[$md5Mark] = 1; }}// 此时你就可以操作$excelData而不用判断了,当然了你也可以直接在else中进行sql语句的组合或者数据库写入操作p($excelData);/*输出:Array( [0] => Array ( [0] => 张三 [1] => 吃饭 ) [1] => Array ( [0] => 李四 [1] => 吃饭 ) [2] => Array ( [0] => 张三 [1] => 喝水 ))*/ 在 name content 上建联合唯一索引 name和content都不能唯一,因为都有重复的记录,至于联合唯一索引,没听说过,如何建啊? name和content都不能唯一,因为都有重复的记录,至于联合唯一索引,没听说过,如何建啊? 在 name content 上建联合唯一索引,如何建?因为Name和content都有重复的,不能单个唯一索引,关于两个联合起来建唯一索引如何建? 将数据库里所有是数据查出来,循环将name和content连接起来,也把excel数据中的name和content连接起来,然后计算两个数组的差值,将差值存入数据库 // 数据库中查出来的所有数据$dbData = array( array(0, '张三', '吃饭'), array(1, '李四', '吃饭'),);// excel中的数据$excelData = array( array('张三', '吃饭'), // 与 $excelData中数据重复 array('李四', '吃饭'), // 与 $excelData中数据重复 array('张三', '喝水') // *应该促入数据库的数据<<<);$ = array(); // 用来当作唯一标识的容器foreach ($dbData as $arr) { $md5Mark = md5($arr[1] . $arr[2]); $[$md5Mark] = 1;}foreach ($excelData as $key => $arr) { $md5Mark = md5($arr[0] . $arr[1]); if (isset($[$md5Mark])) { unset($excelData[$key]); }}p($excelData);/*Array( [2] => Array ( [0] => 张三 [1] => 喝水 ))*/ 联合索引:create UNIQUE INDEX 索引名 on 表名 (name,content); 语文这里的p($excelData);p();方法是什么方法? 如何判断哪些是重复被唯一索引过滤掉的呢插入成功後調用mysql_insert_id()是可以返回最後一條插入紀錄的id如果返回0,就表示插入失敗。可以用此來判斷。 正则的问题! 跪求牛人进,超怪 php数字转换中文算法的问题 有关php与mysql上传图片的问题 超难得问题?如何取消字段的AUTO_INCREMENT属性 谁用过Apache Tomcat ? 服务器缓存? 关于if语句的菜鸟问题 时间显示问题 thinkphp怎么多表插入 请教个关于逻辑运算符的问题 php这样的数组怎么变成那样的数组格式
array('张三', '吃饭'),
array('李四', '吃饭'),
array('张三', '喝水'),
array('李四', '吃饭'),// 重复
array('张三', '喝水') // 重复
);$ = array(); // 用来当作唯一标识
foreach ($excelData as $key => $arr) {
$md5Mark = md5($arr[0] . $arr[1]);
if (isset($[$md5Mark])) {
unset($excelData[$key]);
} else {
$[$md5Mark] = 1;
}
}// 此时你就可以操作$excelData而不用判断了,当然了你也可以直接在else中进行sql语句的组合或者数据库写入操作
p($excelData);
/*
输出:
Array
(
[0] => Array
(
[0] => 张三
[1] => 吃饭
) [1] => Array
(
[0] => 李四
[1] => 吃饭
) [2] => Array
(
[0] => 张三
[1] => 喝水
))
*/
将数据库里所有是数据查出来,循环将name和content连接起来,也把excel数据中的name和content连接起来,然后计算两个数组的差值,将差值存入数据库
// 数据库中查出来的所有数据
$dbData = array(
array(0, '张三', '吃饭'),
array(1, '李四', '吃饭'),
);// excel中的数据
$excelData = array(
array('张三', '吃饭'), // 与 $excelData中数据重复
array('李四', '吃饭'), // 与 $excelData中数据重复 array('张三', '喝水') // *应该促入数据库的数据<<<
);
$ = array(); // 用来当作唯一标识的容器
foreach ($dbData as $arr) {
$md5Mark = md5($arr[1] . $arr[2]);
$[$md5Mark] = 1;
}foreach ($excelData as $key => $arr) {
$md5Mark = md5($arr[0] . $arr[1]);
if (isset($[$md5Mark])) {
unset($excelData[$key]);
}
}p($excelData);
/*
Array
(
[2] => Array
(
[0] => 张三
[1] => 喝水
))
*/
语文这里的p($excelData);
p();方法是什么方法?
如果返回0,就表示插入失敗。可以用此來判斷。