+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| Destina | Sender | StartTime | EndTime | Created |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| 0877222 | 2100 | 10132014010456 | 10132014010459 | 2014-10-13 10:35:46 |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| 0877222 | 2100 | 10132014010456 | 10132014010459 | 2014-10-13 10:35:46 |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| 0888333 | 4100 | 10132014010433 | 10132014010443 | 2014-10-13 10:35:46 |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| 0888333 | 4100 | 10132014010433 | 10132014010443 | 2014-10-13 10:35:46 |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| 0566666 | 3400 | 10132014010432 | 10132014010452 | 2014-10-13 10:35:46 |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| 0566666 | 3400 | 10132014010432 | 10132014010452 | 2014-10-13 10:35:46 |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
我根据从某些 API 检索到的数据插入上表, 防止“Destina”、“Sender”、“StartTime”、“EndTime”列中出现重复 我使用MySQL INSERT IGNORE查询
这是我的代码:
$data = array(
'Destina' => $json['Destina'],
'Sender' => $json['Sender'],
'StartTime' => $json['StartTime'],
'EndTime' => $json['EndTime'],
'created' => date('Y-m-d H:i:s')
);
$redis_data = sprintf(
'INSERT IGNORE INTO my_table (%s) VALUES ("%s")',
implode(',',array_keys($data)),
implode('","',array_values($data))
);
$result = mysql_query($redis_data);
但是重复仍然发生,我该如何解决这个问题,我尝试将主键添加到上面的列,但我收到了此消息:
#1075 - 表定义不正确;只能有一个自动列,并且必须将其定义为键
谢谢
最佳答案
添加 UNIQUE 约束而不是尝试添加其他主键。 您收到的消息意味着您已经有一个自动增量列,因此,如果您想添加主键,那么应该使用此 auto_increment 列。
关于PHP MySQL 插入忽略多个主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26332691/