gpt4 book ai didi

php - 无法关联两个 MySQL 表(外键)

转载 作者:可可西里 更新时间:2023-11-01 07:47:26 25 4
gpt4 key购买 nike

这是我的USER

CREATE TABLE IF NOT EXISTS `users` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `username` varchar(100) NOT NULL,  `expiry` varchar(6) NOT NULL,  `contact_id` int(11) NOT NULL,  `email` varchar(255) NOT NULL,  `password` varchar(100) NOT NULL,  `level` int(3) NOT NULL,  `active` tinyint(4) NOT NULL DEFAULT '1',  PRIMARY KEY (`id`,`email`)) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

这是我的 contact_info 表

CREATE TABLE IF NOT EXISTS `contact_info` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `name` varchar(255) NOT NULL,  `email_address` varchar(255) NOT NULL,  `company_name` varchar(255) NOT NULL,  `license_number` varchar(255) NOT NULL,  `phone` varchar(30) NOT NULL,  `fax` varchar(30) NOT NULL,  `mobile` varchar(30) NOT NULL,  `category` varchar(100) NOT NULL,  `country` varchar(20) NOT NULL,  `state` varchar(20) NOT NULL,  `city` varchar(100) NOT NULL,  `postcode` varchar(50) NOT NULL,  PRIMARY KEY (`id`,`email_address`),) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

系统使用用户名登录用户。我想以使用电子邮件登录的方式修改它。但是 users 表中没有 email_address。

我在用户表中添加了外键 - 电子邮件(即 contact_info 中的 email_address)。

我应该如何查询数据库?

最佳答案

不,不,不,不,不。说真的,不。别逼我过去:-)

您将电子邮件地址存储两次,这违反了第三范式。

关系只需要很短,id。假设您不保证两个表中的 ID 相同(即,我的 users.id 不一定等于我的 contact_info.id),只需添加users 表的 ci_id 作为 contact_info 表的外键。

然后获取用户的 usernameemail 的查询将类似于:

select u.username, ci.email
from users u, contact_info ci
where u.username = 'paxdiablo'
and u.ci_id = ci.id;

关于php - 无法关联两个 MySQL 表(外键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3032346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com