PHP MySQL 插入忽略多个主键

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

谢谢

最佳答案

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

关于PHP MySQL 插入忽略多个主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26332691/

相关文章:

php - MATCH AGAINST 未知列

php - 在 PHP 中将数字转换为日期并格式化为 YYYYMMDD

php - MySQL 结果数组的最后一行分成奇怪的数组

mysql - 如何使SQL脚本文件同时兼容MYSQL和MSSQL?

sql - 使用 SQL,如何计算具有特定值的行的百分比?

SQL Server : select one line from two lines with the same identifier

PHP + SQL 成绩簿更新多行

mysql - 按列索引而不是按列名更新表

java - 如何使用 s3 select 从 Parquet 文件中获取所有列的列表?

sql - COALESCE 的逆