Php 如果mysql值包含来自不同表的另一个mysql值,则echo

Php 如果mysql值包含来自不同表的另一个mysql值,则echo,php,mysql,Php,Mysql,我有两张桌子,“客户”和“用户” 在customers表中,我有一个标题为“name”的列。这有所有的客户名称 在我的用户表中,我有一个标题为“管理”的列。这有特定的客户名称 如果“管理”包含来自“名称”的任何客户,我将尝试显示内容 这里有一个例子 “名称”包含客户“applebees”、“johnny carinos”和“必胜客” 用户rick正在“管理”applebees和“必胜客”。在他的行/列中,它看起来像“applebees,必胜客”(我使用的是内爆函数,这就是为什么有一个“) 所以,

我有两张桌子,“客户”和“用户”

在customers表中,我有一个标题为“name”的列。这有所有的客户名称

在我的用户表中,我有一个标题为“管理”的列。这有特定的客户名称

如果“管理”包含来自“名称”的任何客户,我将尝试显示内容

这里有一个例子

“名称”包含客户“applebees”、“johnny carinos”和“必胜客”

用户rick正在“管理”applebees和“必胜客”。在他的行/列中,它看起来像“applebees,必胜客”(我使用的是内爆函数,这就是为什么有一个“)

所以,在我的客户页面上,我想让rick去看applebees和必胜客。我不想让他去看johnny carinos,因为他没有管理它

我怎么能做到这一点呢?我尝试过preg match&strpos,但失败得很惨。(我对php还是比较陌生)。如果只有一个值,这会容易得多,所以我可以只设置value=value。不幸的是,有多个值用于“管理”真的让我搞砸了

希望这有意义。谢谢你的帮助

这是我现在拥有的(是的,我知道,这可能是大错特错。)


答案在于您的数据库模式和查询方式。您并没有真正了解数据库表结构,但我建议您使用类似的方式

users
-------
user_id INT, autoincrement, PRIMARY KEY
user_name VARCHAR
[other user-specific fields]

users_to_customers
-------
user_id INT
customer_id INT
[compound primary key across both fields]

customers
-------
customer_id INT, autoincrement, PRIMARY KEY
customer_name VARCHAR
[other customer specific fields]
注意:我这里有三个表。这允许您将任意数量的用户与任意数量的客户关联起来。现在要获取您正在查找的信息,假设您知道查看客户页面的用户的
用户id
。您的查询可能如下

SELECT c.customer_id, c.customer_name, [whatever other fields you need]
FROM users AS u
INNER JOIN users_to_customers AS uc
INNER JOIN customers AS c
WHERE u.user_id = ? [the user_id of the user viewing the page]
这将为您提供与用户相关的客户信息



您也不应该使用
mysql.*
函数,因为它们已被弃用(请注意PHP.net文档中的红色大警告)。也许可以使用mysqli.*函数。

是否只需要显示“Rick”的数据"? 在大局中,rick已登录,他需要查看他正在管理的财产?太棒了!我将在今晚的某个时候继续实施这一计划,如果我成功地完成了这一计划,我将向您汇报,并将您的答案标记为正确。谢谢@Alex刚刚更新了一些关于如何在这些表上设置主键的信息。在创建新客户/用户时,我想我会运行第二个查询,在users\u to\u customers中创建一个新id,以便所有id在三个表中匹配,对吗?还是有更有效的方法来做到这一点?@Alex说得对。此外,如果用户和客户之间没有多对多关系(即用户和客户之间存在一对多关系)然后,您可以取消
users\u to\u customers
表,并将
user\u id
字段直接放在
customers
中,以表示管理该客户的用户。即将在此处实施您的解决方案…当用户分配了客户时,它看起来是这样的:
Winghouse,Red Hot&Blue,Applebees
。所以,您的代码仍然只显示这些客户,而不显示其他客户,对吗?我这样问是因为客户名称显然与列出为用户管理的客户的字段不匹配,因为该字段将所有客户都包含在一个字段中。希望这是有道理的。
SELECT c.customer_id, c.customer_name, [whatever other fields you need]
FROM users AS u
INNER JOIN users_to_customers AS uc
INNER JOIN customers AS c
WHERE u.user_id = ? [the user_id of the user viewing the page]