关于addAll批量写入获取主键id集和影响条数技巧

浏览:11884 发布日期:2014/01/17 分类:技术分享
此方法纯属技巧

虽然addAll针对的是mysql数据库,但是实际应用中非常有用。希望官方能够对PDO驱动的mysql数据库也能支持此方法

有些人肯定知道 addAll返回的不是影响条数,也不是返回的所有写入的主键id集,而是返回的写入的第一条数据的主键值 (没有主键的表没有测试过addAll方法,此次只是针对要获取addAll批量写入主键集的技巧,没有主键的就自己测试了),如果想获取影响了多少条和写入的id集有哪些 请往下看
比如我用addAll批量写入了 这几条id数据,他们id是 30 31 32 33 34 35 dump(M('xx')->addAll($data)); 得到的值是 30 不是条数5也不是最后一条35 现在我们要获取 他写入的所有主键集30,31,32,33 ,34,35...怎么办?其实很简单,$data是我们批量写入的数据,我们知道id主键是递增的,那么就直接从起始id递增吧,这儿我们获取到了起始id为30 怎么知道他是到35结束呢?我们不是还有写入的$data么?就是M('xx')->addAll($data)里面的$data, 所以我们获取到共写入了多少条就是count($data),共写入了那些主键,根据主键递增原则 那么主键id集就是 第一条30 到 (30+count($data))结束 写入了那些主键id就是30到 (30+count($data))和他们之间的数据,当然影响条数如果addAll执行成功肯定就是count($data);了。 明白过来就很简单了吧?

最佳答案
评论( 相关
后面还有条评论,点击查看>>