一、如何一次插入多条记录
开始的做法:
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 语句判断该记录是否已经存在。
大家可以根据自己的需求来采取相应的方法。