gpt4 book ai didi

PHP根据MySql中第二个表中字符串中包含的值的匹配从一个表中选择记录

转载 作者:行者123 更新时间:2023-11-30 00:38:08 25 4
gpt4 key购买 nike

对于我网站上的用户(标识为 $fb_user_id),我正在尝试提取产品表 ($productstable) 中的产品所有者 ID (prod_owner_fb_id) 与用户 friend 列表中的值之一匹配的所有产品记录 ( $usertable.fb_friends) 列,存储为逗号分隔字符串 (varchar)。

下面使用 IN 子句的查询结果仅在 fb_friends 列中只有单个值时才能成功提取记录,如果有多个值则无法成功提取记录。

我是一名业余爱好者,所以不确定我是否遇到了过于复杂的问题或仅仅是语法/用户错误。感谢任何帮助。

我的查询:

$query = "SELECT * FROM $productstable, $usertable WHERE $usertable.fb_user_id = $fb_user_id AND $productstable.prod_owner_fb_id IN ($usertable.fb_friends)"; 

示例数据:

用户表 - usertable(两个字段都是 varchar):

fb_user_id          fb_friends

111111111111111 21709455,222222222222222,82101450,503046016,507...
222222222222222 111111111111111, 697041857,333333333333333,1000006...
333333333333333 111111111111111,1205332730,222222222222222

产品表 - productstable(两个字段都是 varchar):

product_id     prod_owner_fb_id 

A 111111111111111
B 111111111111111
C 222222222222222

注意 - 使用 LIKE 子句也不成功 - 未找到记录,没有错误:

$query = "SELECT * FROM $productstable, $usertable WHERE $usertable.fb_user_id = $fb_user_id AND $productstable.prod_owner_fb_id LIKE '%" . $usertable1.fb_friends . "%'";

最佳答案

您的 fb_friends 列并不是在 WHERE 子句中存储可搜索数据的最有效方法,尤其是在扩展时。这是解决此问题的一种方法:

考虑启动一个包含 3 列(id(主、自动增量)、fb_user_id(索引)、fb_friend)的新表(friendstable - 您的命名约定)。每次用户添加 friend 时,您都会在此表中插入一行。

然后生成一个包含如下查询的报告:

$query = "SELECT * from productstable WHERE product_owner_fb_id IN (SELECT fb_friend from friendstable WHERE fb_user_id = '".$fb_user_id."')";

关于PHP根据MySql中第二个表中字符串中包含的值的匹配从一个表中选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22001274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com