在thinkphp3.2插入相同的数据问题的完美解决方案

问题描述

在tp3.2插入数据使用的今天,为了避免相同的数据插入(同样的数据,关键是相同或相似的领域唯一的指标),我创建的索引,作为主键索引增量场,不会有重复的,唯一的指标可能会有反复,我希望UID,年,月,日的三场一样,更新当前记录。




解决问题的方法

面对这样的问题,我们知道MySQL提供了重复的密钥更新或替换来解决它。

使用重复密钥更新

在插入数据之前,记录在表中记录,如下所示




SQL语句如下所示。当插入记录时,它与表中的先前记录相同,然后更新记录的更新,否则插入记录。


插入(` work_log `
` UID `,
'年',
`月`,
'日',
`状态`

价值观
(1, 2016, 6,3, 1)
在复制的钥匙
更新
=状态
价值观
('状态'),
` updated_ts ` =现在();



使用替换

代码如下:

首先执行以下代码插入一段数据


替换(` work_log `
` UID `,
'年',
`月`,
'日',
`状态`

价值观
(1, 2016, 6,2, 1)


效果如下


下面的代码再次执行,上面插入的代码将被更新。


替换(` work_log `
` UID `,
'年',
`月`,
'日',
`状态`

价值观
(1, 2016, 6,2, 5)


效果如下


重复密钥更新与替换的区别

当相同值发生时,重复密钥更新将更新现有记录。替换为删除前一个记录,然后插入新记录。

在thinkphp3溶液。二

在thinkphp3。2,添加()函数的第三个参数用于处理插入相同数据的问题。

在添加()方法在Model.class.PHP,在Db.class.php的插入方法,和插入的方法,我们可以看到下面的代码:


$替换正好是Add方法中的第三个参数。

在thinkphp3.2插入相同的数据完美的解决方案,是分享的全部内容,小编。我们希望能给你一个参考,并希望你能支持它。