PHP MySQL使用多个主键插入忽略

时间:2014-10-13 03:56:42

标签: php mysql sql

+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| 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 - 表定义不正确;只能有一个自动列,必须将其定义为键

谢谢

1 个答案:

答案 0 :(得分:1)

添加UNIQUE约束,而不是尝试添加其他主键。 您获得的消息意味着您已经有一个自动增量列,因此,如果您想添加主键,那么此auto_increment列应该是一个。