我最近开始使用PDO,因为我试图提高我的PHP技能,并了解一段时间以前已弃用串联。
当前,我已经建立了一个基本的"用户控制面板"系统,在该系统中,用户寄存器及其详细信息分配给accounts
表。在其accounts
行上,它们具有business_1
,business_2
和business_3
,它们在businesses
表中填充了行的ID。
我想查找此用户名的accounts
行中每个business_x
列的ID,在businesses
表中找到它们,然后从每个相关行中打印列值...但是我不知道怎么!
我希望弄清楚这一点,因为语法感觉与我使用过的不推荐使用的SQL PHP语句完全不同。如果您有更好的学习资源可以更好地学习,请随时在评论中告诉我。
可以在单个查询中处理此问题,因此您可能不需要在使用PDO的上下文中提出此问题。但是,我会呈现我的答案,好像是一个准备好的声明。
有几种方法可以做您要问的事情,但是最简单的是只使用or
进行CC_11:
select
businesses.business_name
from
businesses join accounts on
(
businesses.id=accounts.business_1
or businesses.id=accounts.business_2
or businesses.id=accounts.business_3
)
where
accounts.id=?
对于将来,最好将存储在单独表中的"相同信息的倍数"最好,而不是" x_1"," x_2"," x_3"列。理想情况下,您将有一个用于accounts
,businesses
和account_businesses
的表。account_businesses表将有一个帐户ID的列,另一个用于业务ID,您将从帐户表中删除业务_#列。
这使得更简单的查询;更好地分割数据以进行分析;让您每个帐户拥有"无限"的其他公司;并且不会用一堆空的次级/第三纪/等列将桌子弄乱。
使用该方法的查询将很简单:
select
businesses.business_name
from
businesses, accounts, account_businesses
where
businesses.id = account_businesses.business
and account_businesses.account = accounts.id
and accounts.id=?