Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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 查询多个表和if、elseif、else条件_Php_Mysql - Fatal编程技术网

Php 查询多个表和if、elseif、else条件

Php 查询多个表和if、elseif、else条件,php,mysql,Php,Mysql,我试图根据查询返回显示不同的消息/按钮。有三种不同的情况 用户查看他的帐户 用户评论好友帐户 用户评论非好友帐户 因此,当用户检查自己的帐户时,我会隐藏“添加为好友”按钮。当他检查非好友帐户时,我显示“添加为好友”按钮。当用户检查朋友帐户时,我想显示此用户是其朋友的消息 这是查询和if、elseif、else条件。逻辑是错误的,但无法弄清楚到底是什么 if(isset($_GET['id']) && is_numeric($_GET['id'])){ $id = $_

我试图根据查询返回显示不同的消息/按钮。有三种不同的情况

  • 用户查看他的帐户
  • 用户评论好友帐户
  • 用户评论非好友帐户
  • 因此,当用户检查自己的帐户时,我会隐藏“添加为好友”按钮。当他检查非好友帐户时,我显示“添加为好友”按钮。当用户检查朋友帐户时,我想显示此用户是其朋友的消息

    这是查询和if、elseif、else条件。逻辑是错误的,但无法弄清楚到底是什么

    if(isset($_GET['id']) && is_numeric($_GET['id'])){
          $id = $_GET['id']; {     
    $result = $pdo->prepare("SELECT usr.*, userFriends.*
                             FROM users usr
                                LEFT JOIN user_friends userFriends
                                    ON usr.id = userFriends.friend_id
                             WHERE id = ?                           
                             LIMIT 1");
    
        $result -> bindParam(1, $id, PDO::PARAM_INT);
        $result -> execute();
        foreach ( $result as $row )
        {
             // some html here
            if($_SESSION['id'] == $row['user_id'])
            { 
                echo ''; 
            } 
            elseif ($id == $row['friend_id'])
            {
                echo ' Already friends ';
            }
            else                            
            { 
                echo ' Add as friend '; 
            }
        }
     }
    
    因此,
    $\u会话['id']
    是当前会话(已登录用户)

    $id
    是非好友/好友档案

    $row['user\u id']
    是表
    user\u friends


    $row['friend\u id']
    是来自
    user\u friends
    表的非friend/friend id

    您的查询逻辑有点错误

    首先,您需要
    id
    用户id
    朋友id

    因为
    $id=$\u GET['id']
    我猜
    $id
    var保持
    friend\u id
    (用户尝试查看的配置文件的id)

    但是您需要以某种方式获取当前的
    用户id

    $user\u id=$\u SESSION['id']

    然后:

    SELECT u.id user_id, uf.frien_id
    FROM users u
    LEFT JOIN user_friends uf
    ON u.id = uf.user_id
       AND  uf.friend_id = ?                           
    WHERE u.id = ?
    LIMIT 1
    
    ...
    
    $result -> bindParam(1, $id, PDO::PARAM_INT);
    $result -> bindParam(1, $user_id, PDO::PARAM_INT);
    
    你真的在
    user\u friends
    user\u id=friends\u id
    中有记录吗?通常我不会。如果没有这样的记录

    因此,您必须将您的条件
    如果($\u SESSION['id']==$row['user\u id'])
    更改为

    if($id == $user_id)
    

    你的逻辑有点错

    你想查什么?您想检查$id是否是$\u会话['id']的朋友。。因此,您应该选择基于$id或$u会话['id']

    if(isset($_GET['id']) && is_numeric($_GET['id'])){
       //the first thing you need to check is that is this you are viewing your own profile by just checking this and without even need to query.
       if($_SESSION['id'] == $_GET['id']){
          echo '';
       } else {
           $id = $_GET['id'];
    
           $result = $pdo->prepare("SELECT usr.*, userFriends.*
                         FROM users usr
                            LEFT JOIN user_friends userFriends
                                ON usr.id = userFriends.friend_id
                         WHERE **Your ID Column**= ?                           
                         LIMIT 1");
    
          $result -> bindParam(1, $_SESSION['id'], PDO::PARAM_INT);
          $result -> execute();
          //check if the result return rows?
          // if return rows of data, it's already friend
          // else its not friend yet
    
          // what's the purpose for this loop then?
          foreach ( $result as $row ){
    
          }
      }
    }
    

    你能复制var_dump($result)的结果吗;请?它与查询相同。那么您可以打印$row的值吗?如果您的案例没有按预期工作,那么问题一定也在那里。我刚刚发现,您在第一个if-then-friend-id上检查用户id,这是有意的吗?现在我上了friend按钮被隐藏了。在当前用户上显示消息“已发送”。“非好友”按钮被隐藏,没有消息。是的,因为在
    IF
    上,我在页面上检查当前用户配置文件的时间
    elseif
    我想检查他们是否已经是朋友,即在朋友用户页面上
    else
    是非好友页面时当前用户(登录用户)是
    $\u会话['id']
    就像这样,我在每个用户上都有相同的配置文件。。我猜是因为$\u会话['id'],因为您没有按当前用户筛选user\u friends表,而只是按friend\u id筛选,所以如果此文件所有者是任何用户的朋友,则查询成功