Php 从mysql表中获取记录时出现的问题
我在数据库中有一个表,例如:Php 从mysql表中获取记录时出现的问题,php,mysql,Php,Mysql,我在数据库中有一个表,例如: 插入到'myintrest'('id','intrest','memberId')值中 (32,“练习”,9), (33"冒险",5),, (34,“练习”,5), (35,“第5条”), (38,“冒险”,6), (46"冒险",9),, (47,《天体科学》,9), (48,“工艺品”,9), (49,“时尚与设计”,9), (52,“第6条”), (53,“第9条”); 当前用户登录id为“5”。如果我们根据此用户ID从myintrest表中获取intre
插入到'myintrest'('id','intrest','memberId')值中
(32,“练习”,9),
(33"冒险",5),,
(34,“练习”,5),
(35,“第5条”),
(38,“冒险”,6),
(46"冒险",9),,
(47,《天体科学》,9),
(48,“工艺品”,9),
(49,“时尚与设计”,9),
(52,“第6条”),
(53,“第9条”);
当前用户登录id为“5”。如果我们根据此用户ID从myintrest表中获取intrest,我们将得到以下结果:
(33,“冒险”,5),
(34,“练习”,5),
(35,“第5条”),
但我的问题是如何获取该表中具有相同intrest的用户。
在这种情况下,其他用户也有同样的兴趣,比如冒险、锻炼和艺术
如果这三个intrest有另一个用户,那么他将被抓取。希望你能理解我的疑问
根据这个表,我希望成员_id=9,因为它有相同的intrest
请帮助我获取此记录。使用子查询尝试这样做
SELECT `memberId` FROM `myintrest` where `intrest` in (SELECT
`intrest` FROM `myintrest` where `memberId` = $loginUserId );
这将为用户$loginUserId提供所有兴趣
//$arr_interests_loginUserId = array of all interests of user $loginUserId
Method 1:
$condition='';
foreach( $i=0; $i< count($arr_interests_loginUserId);$i++){
$condtion.= $arr_interests_loginUserId[$i].' AND ';
}
$condtion.= $arr_interests_loginUserId[count($arr_interests_loginUserId)];
"SELECT `memberId` FROM `myintrest` where $condtion ";
Method 2:
"SELECT `memberId` FROM `myintrest` where ".implode(' AND ', $arr_interests_loginUserId);
用户必须共享所有相同的兴趣,或者至少一个?例如,用户6是否符合条件,既然他也有冒险经历?@Balraj:你想要至少一个共同的兴趣,还是其他用户的所有兴趣都应该是用户的兴趣?它会给每个成员至少一个共同的兴趣。我用过它,但它会返回所有成员id,因为如果任何一个与任何登录用户intrest匹配,那么它就会显示出来。我只需要那些有相同兴趣的记录,这意味着其他人在这个表中有相同的兴趣。任何解决方案我只得到9个成员id,因为9个成员id具有这些优点。该成员还具有其他intrest,但包括登录人intrest,因此这也适用于该用户。希望你能理解我的问题。我问过我的其他朋友,但没有人有任何解决办法。请帮我解决这个问题。感谢Balrajto使用WHERE语句,使用$condition=introde('AND',$arr\u interests\u loginUserId);更详细地说是的,我们也可以这样做…@DirkMcQuickly@BalrajParmar:我的回答对你有帮助吗?然后你可以把它标记为有用的答案。看见
//$arr_interests_loginUserId = array of all interests of user $loginUserId
Method 1:
$condition='';
foreach( $i=0; $i< count($arr_interests_loginUserId);$i++){
$condtion.= $arr_interests_loginUserId[$i].' AND ';
}
$condtion.= $arr_interests_loginUserId[count($arr_interests_loginUserId)];
"SELECT `memberId` FROM `myintrest` where $condtion ";
Method 2:
"SELECT `memberId` FROM `myintrest` where ".implode(' AND ', $arr_interests_loginUserId);
SELECT `memberId` FROM `myintrest` where `intrest` in (SELECT
`intrest` FROM `myintrest` where `memberId` = $loginUserId );