当前位置:  开发笔记 > 编程语言 > 正文

PHP PDO - MySQL查询创建或更新(唯一索引)

如何解决《PHPPDO-MySQL查询创建或更新(唯一索引)》经验,为你挑选了1个好方法。

一切顺利.

我在MySQL(MariaDB)数据库中有一个表,其中包含以下模式:

CREATE TABLE `scheduled_immobilise` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `account` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL,
  `device` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL,
  `allow_from` time DEFAULT NULL,
  `allow_to` time DEFAULT NULL,
  `active` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL,
  `last_updated` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `cron_id_from` int(11) DEFAULT NULL,
  `cron_id_to` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique` (`account`,`device`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

我要做的是编写一个查询,它将创建一行(如果唯一索引不存在),或者如果它已经存在则更新它.我知道你可以先做一个选择查询来做到这一点,但最终我希望避免这种情况.下面是我用来创建的SQL查询.请注意这是使用PDO命名的占位符..

INSERT INTO 
    scheduled_immobilise (
        account, 
        device, 
        allow_from, 
        allow_to, 
        active
    ) 
VALUES (
    :account, 
    :device, 
    :allow_from, 
    :allow_to,
    :active
)

非常感谢任何帮助,提前感谢!

保罗.



1> 小智..:

这有一个mysql选项

INSERT INTO 
scheduled_immobilise (
    account, 
    device, 
    allow_from, 
        allow_to, 
        active
    ) 
VALUES (
    :account, 
    :device, 
    :allow_from, 
    :allow_to,
    :active
)
ON DUPLICATE KEY UPDATE account = :account, device = device...etc

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有