加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 22:00:43 所属栏目:PHP教程 来源:网络整理
导读:这是我的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
这是我的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,`email_address`),) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

系统使用用户名登录用户.我想以一种使用电子邮件登录的方式对其进行修改.但是users表中没有email_address.

我在用户表中添加了外键 – 电子邮件(在contact_info中是email_address).

我该如何查询数据库?

解决方法

不,不,不.说真的,没有.不要让我过来那里:-)

您通过存储两次电子邮件地址来破坏第三范式.

这种关系只需要一个短的,即id的关系.假设您不保证两个表中的ID相同(即,我的users.id不一定等于我的contact_info.id),只需将ci_id添加到users表以充当外键的contact_info表.

然后获取用户的用户名和电子邮件的查询将是这样的:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读