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

这是我的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),只需将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;

标签:php,mysql

来源: https://codeday.me/bug/20190715/1472489.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值