繁体   English   中英

限制在我的SQL查询中不起作用

[英]limit not working in my sql query

我在php中创建了一个“您可能认识的人”脚本。 该脚本在php friends系统中向我显示了我朋友的朋友。 我有一个称为用户的表(user_id,名称,姓氏,电子邮件,个人资料),该表保存有关用户的信息。 另一个名为friends(friend_id,user_one,user_two)的表 ,其中包含作为朋友的用户的ID。 我的代码如下:

<?php

//----- get friends of friends -------


$friends_of_friends = mysql_query(" SELECT u.*
FROM (SELECT DISTINCT user_one as user_id
        FROM friends
        WHERE user_two IN (SELECT user_one as user_id
                  FROM friends
                  WHERE user_two = '$session_user_id'
                  UNION DISTINCT
                  SELECT user_two
                  FROM friends
                  WHERE user_one = '$session_user_id')
        UNION DISTINCT
    SELECT DISTINCT user_two
        FROM friends
        WHERE user_one IN (SELECT user_one as user_id
              FROM friends
                  WHERE user_two = '$session_user_id'
                  UNION DISTINCT
              SELECT user_two
              FROM friends
              WHERE user_one = '$session_user_id')
     ) f
 JOIN users u
 ON u.user_id = f.user_id  ");


  while ($run_friends= mysql_fetch_assoc($friends_of_friends)) {

  $friend_friend_id = $run_friends['user_id'];  



// ---- friends of my friends that are not my friends --------------


$check_friend_query = mysql_query("  SELECT friends_id from friends WHERE  (user_one='$session_user_id' AND user_two='$friend_friend_id') OR (user_one='$friend_friend_id' AND user_two='$session_user_id')   ");

if (mysql_num_rows($check_friend_query) != 1){ 

    $not_friends = mysql_query("SELECT `user_id`, `name`, `surname`, `email`, `profile` FROM `users` WHERE (`user_id`='$friend_friend_id' AND `user_id`!='$session_user_id')  "); 



    while ($run_not_friends= mysql_fetch_assoc($not_friends)) {
      $i=1;
    if ($i <= 3)
    {                                                           
    $not_friend_id = $run_not_friends['user_id'];

                  echo $not_friend_id;

     $i++;
     }
    }

  }//end if

 }//end while

?>

一切正常。 我只想选择并显示3个人,这是我朋友的朋友(因为我可能列出了许多我朋友的朋友)。 如您所见,我在sql查询中使用了LIMIT,但它不起作用。 有什么想法怎么办?

试试这个代码。 将打印3个朋友ID。 我没有尝试过。

$i=1;
while ($run_friends= mysql_fetch_assoc($friends_of_friends)) {

     $friend_friend_id = $run_friends['user_id'];  
     // ---- friends of my friends that are not my friends --------------

     if ($i <= 3)
     { 
          $check_friend_query = mysql_query("  SELECT friends_id from friends WHERE  (user_one='$session_user_id' AND user_two='$friend_friend_id') OR (user_one='$friend_friend_id' AND user_two='$session_user_id')   ");

          if (mysql_num_rows($check_friend_query) != 1){ 
              $not_friends = mysql_query("SELECT `user_id`, `name`, `surname`, `email`, `profile` FROM `users` WHERE (`user_id`='$friend_friend_id' AND `user_id`!='$session_user_id')  ");
               while ($run_not_friends= mysql_fetch_assoc($not_friends)) {
                   $not_friend_id = $run_not_friends['user_id'];
                   echo $not_friend_id;
                   $i++;
               }
          }//end if
      }
 }//end while

尝试这个:

<?php

//----- get friends of friends -------


$friends_of_friends = mysql_query(" SELECT u.*
FROM (SELECT DISTINCT user_one as user_id
        FROM friends
        WHERE user_two IN (SELECT user_one as user_id
                  FROM friends
                  WHERE user_two = '$session_user_id'
                  UNION DISTINCT
                  SELECT user_two
                  FROM friends
                  WHERE user_one = '$session_user_id')
        UNION DISTINCT
    SELECT DISTINCT user_two
        FROM friends
        WHERE user_one IN (SELECT user_one as user_id
              FROM friends
                  WHERE user_two = '$session_user_id'
                  UNION DISTINCT
              SELECT user_two
              FROM friends
              WHERE user_one = '$session_user_id')
     ) f
 JOIN users u
 ON u.user_id = f.user_id  ");


  while ($run_friends= mysql_fetch_assoc($friends_of_friends)) {

  $friend_friend_id = $run_friends['user_id'];  



// ---- friends of my friends that are not my friends --------------


$check_friend_query = mysql_query("  SELECT friends_id from friends WHERE  (user_one='$session_user_id' AND user_two='$friend_friend_id') OR (user_one='$friend_friend_id' AND user_two='$session_user_id')   ");

if (mysql_num_rows($check_friend_query) != 1){ 

    $not_friends = mysql_query("SELECT `user_id`, `name`, `surname`, `email`, `profile` FROM `users` WHERE `user_id`='$friend_friend_id' AND `user_id`!='$session_user_id' LIMIT 3"); 

    while ($run_not_friends= mysql_fetch_assoc($not_friends)) {

    $not_friend_id = $run_not_friends['user_id'];

                  echo $not_friend_id;
    }

  }//end if

 }//end while

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM