首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数据库中获取信息(复杂)

从数据库中获取信息(复杂)
EN

Stack Overflow用户
提问于 2014-01-21 17:32:53
回答 3查看 79关注 0票数 0

我需要一点帮助。我需要从数据库中抓取所有包含它们登录ID的行。基本上,我在数据库中有一个名为“所有者”的列,其中有几个it。让我们说"1,6,8",如果用户ID 6登录,我需要抓取该行。如果它不包含6,说"2,5,7“,那就不要抓住它。我的措辞可能不太好。

代码语言:javascript
复制
--------------------------------
ID |Name    |Other Info |Owners|
---|--------|-----------|------|
1  |Testing |Testing 123|1,4,6 |
---|--------|-----------|------|
2  |Testing1|Catz       |5,7,8 |
---|--------|=-----------------|
3  |Testing2|Woof       |6,9,10|
---|--------|-----------|------|

换言之:

  • 用户ID 6登录。
  • 转到需要抓取行的页面。
  • 脚本获取第1行和第3行(因为所有者列表包含6)。
  • PHP前台,显示表中的resutls。(这方面不需要帮助)。

我想要这样做的原因是我不希望ownerid2ownerid3ownerid4占用数据库中单独列中的大量空间。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-21 17:39:08

你可以试试这个:

代码语言:javascript
复制
SELECT * FROM table_name WHERE FIND_IN_SET(?, Owners);

其中?必须替换为用户id,例如

代码语言:javascript
复制
SELECT * FROM table_name WHERE FIND_IN_SET(6, Owners);

正如其他人所指出的,您可能还想阅读有关数据库规范化的内容,下面是FIND_IN_SET的文档

票数 3
EN

Stack Overflow用户

发布于 2014-01-21 17:36:02

这可能是你想要的吗?

代码语言:javascript
复制
SELECT * FROM table_name WHERE Owners LIKE '%6%';

编辑:这样做会吸引其他业主,比如68,600,6123。您应该研究数据库规范化。

EDIT2:

请想想看,因为您的逗号之间没有空格,所以可以使用of ();函数如下:

代码语言:javascript
复制
$ownerid = //WHATEVER THE OWNERS ID IS
$sql = "SELECT * FROM table_name WHERE Owners LIKE '%$ownerid%'";
$result = mysqli_query($con, $sql);
while($data = mysqli_fetch_array($result)){
    $owners = $data['Owners'];
    $owners = explode(',',$data);
    if(in_array($ownerid, $owners){
        //SHOW ROW DATA HERE
    }
}
票数 0
EN

Stack Overflow用户

发布于 2014-01-21 17:40:47

实现这一点的一种更简洁的方法是为所有者关系使用一个单独的表。

代码语言:javascript
复制
Table = Owner, has ID.
Table = Test, what you are currently trying to get
Table = OwnerTestRel, has a foreign key to Owner and one to Test.

那么您的查询就会变成类似于

代码语言:javascript
复制
Select test.* 
FROM test
JOIN OwnerTestRel ON test.id=OwnerTestRel.testId
WHERE OwnerTestRel.ownerId = {owner's Id}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21265177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档