Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从mysql表中获取记录时出现的问题_Php_Mysql - Fatal编程技术网

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 );