一、如何一次插入多条记录
开始的做法:
foreach ($data as $user) {
$sql = " INSERT INTO `user` (`uid`,`uname`) VALUES (".$user['id'].",".$user['uname'].")";
mysql_query($sql);
}
这种方法执行多条语句,请求数据库次数也就多,效率比较低。
现在做法:
$sql = " INSERT INTO `user` (`uid`,`uname`) VALUES ";
foreach ($data as $user) {
$sql .= "(".$user['id'].",".$user['uname']."),";
}
//去掉最后一个逗号
$sql = rtrim($sql, ',');
mysql_query($sql);
这样做只需请求一次数据库,效率相对较高。
二、避免插入重复记录
需要将多个field设置Unique,以便确定唯一性。
使用 replace
REPLACE INTO
org_tag_game
(
tid,
gindex,
score,
status,
recmmend,
play_time,
add_count
)
VALUES
%s;
使用 ignore
INSERT IGNORE INTO
org_tag_game
(
tid,
gindex,
score,
status,
recmmend,
play_time,
add_count
)
VALUES
%s;
以上两种方法都是碰到有重复记录时跳过。
使用ON DUPLICATE KEY UPDATE
INSERT INTO
org_tag_game
(
tid,
gindex,
score,
status,
recmmend,
play_time,
add_count
)
VALUES
(
%d,
%d,
%d,
1,
0,
0,
1
)
ON DUPLICATE KEY UPDATE
status = 1,
add_count = add_count + 1
;
此方法碰到相同记录时,会执行性 ON DUPLICATE KEY UPDATE 后面的语句。
当然,还有另外一种方法就是,每次插入记录,先执行 select 语句判断该记录是否已经存在。
大家可以根据自己的需求来采取相应的方法。