php 主键是否存在,php – 插入或更新(如果存在)没有主键

我有以下数据库MySQL表.

> id(PK,AI)

>电子邮件

>国家

> lastlogin

我在PHP中有一个常规查询,将其插入表中.

但是,从逻辑上讲,如果此代码运行多次,则每次都会向数据库插入相同的行.

我希望我的检查和复制参考是电子邮件字段,如果电子邮件是相同的,请更新国家和lastlogin.

我检查了类似问题的其他问题,建议的方法是使用ON DUPLICATE KEY这样

INSERT INTO

VALUES ('value1', 'value2','value3', ...)

ON DUPLICATE KEY UPDATE

field1='value1', field2='value2', field3='value3', ...

但是,我的主键不是电子邮件字段而是id,但我不想对其进行检查.

解决方法:

一个选项是使电子邮件字段唯一,然后它应该与主键相同,至少关于MySQL的ON DUPLICATE KEY UPDATE:

ALTER TABLE yourTable ADD UNIQUE INDEX `idx_email` (`email`);

然后:

INSERT INTO yourTable (email, country, lastlogin)

VALUES ('tony9099@stackoverflow.com', 'value2', 'value3')

ON DUPLICATE KEY UPDATE

email='value1', country='value2', lastlogin='value3'

如果您的表中已存在电子邮件tony9099@stackoverflow.com,则更新将使用其他值启动.

If you specify ON DUPLICATE KEY UPDATE, and a row is inserted that would cause a duplicate value in a UNIQUE index or PRIMARY KEY, MySQL performs an UPDATE of the old row.

此方法不仅适用于主键,还适用于具有唯一索引的任何列.

标签:php,mysql

来源: https://codeday.me/bug/20190727/1552607.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值