2015-11-01 61 views
0

我有兩個表usersfriends_inUsers表是我的主表,每個註冊用戶信息都存儲在那裏。 Friends_in表是其中一個朋友另一個朋友請求sended信息。現在我比較我friends_infrom_fren列數據與userspeople_name column.I從users表第一取出的數據中像下面的功能被存儲爲from_fren柱和to_fren: -ORDER BY子句不工作的第二個表是關於與第一臺

$query = "SELECT person_name FROM users"; 
          try 
           { 
            $stmts = $db->prepare($query); 
            $result = $stmts->execute(); 
            if($result == true) 
            { 
             $done = true; 
            } 
           } 
           catch(PDOException $ex) 
            { 
             die("Failed to run query: " . $ex->getMessage()); 
            } 
           if($done) 
           { 
            $rows = $stmts->fetchAll(); 
            return $rows; 
           } 
       } 

    $data = forallUsers(); 

現在,我得到了我的所有用戶的細節,這樣,在那之後我用了一個foreach循環,並比較了users表及其與friends_in表其列from_frenperson_name象下面這樣: -

foreach($data as $row){ 
    require('My database info is here'); 
    $done_two = false; 
    $other = $row['person_name']; 
     $realuser = $_SESSION['username'] ['username']; 

      $query = 'SELECT from_fren,to_fren FROM friend_in WHERE (from_fren = :ot and to_fren = :me)'; 
       $query_paramt = array( 
       ':ot' => $other, 
       ':me' => $realuser 
       ); 

       try 
        { 
         $stmts = $db->prepare($query); 
         $results = $stmts->execute($query_paramt); 
         if($results == true) 
          { 
           $done_two = true; 
          } 
        } 
       catch(PDOException $ex) 
         { 
          die("Failed to run query: " . $ex->getMessage()); 
         } 
    if($done_two) { 
        //do something.... 
        } 
    } 

我想從friend_in表中選擇from_frento_fren兩列。 $other是誰派弗倫請求$realuser是誰正在接收弗倫提出建議的人的人(這將是會話的用戶)。

****但我的主要問題是****

當我這顯示在我的網站,我得到的from_frento_fren數據ORDER BY ID usersASC table.I的意思是我想告訴最新friend_request信息session_user。數據我順利拿到,但問題是,這些數據是一些如何users表的ID ASC顯示在order

我怎麼能證明在這種情況下session_user新弗倫要求?我試圖和名稱latestfriend_in表作出了新的列並設置類型datetime數據庫和PHP支持now()。我改變我以往的代碼和它現在的工作用於存儲當前datetime當一個用戶發送弗倫REQ到another.After我用ORDER BY條款上friend_inlatestDSEC。這一個是我的新代碼: -

foreach($data as $row){ 
    require('My database info is here'); 
    $done_two = false; 
    $other = $row['person_name']; 
     $realuser = $_SESSION['username'] ['username']; 

      $query = 'SELECT from_fren,to_fren FROM friend_in WHERE (from_fren = :ot and to_fren = :me) ORDER BY latest DESC'; 
       $query_paramt = array( 
       ':ot' => $other, 
       ':me' => $realuser 
       ); 

       try 
        { 
         $stmts = $db->prepare($query); 
         $results = $stmts->execute($query_paramt); 
         if($results == true) 
          { 
           $done_two = true; 
          } 
        } 
       catch(PDOException $ex) 
         { 
          die("Failed to run query: " . $ex->getMessage()); 
         } 
    if($done_two) { 
        //do something.... 
        } 
    } 

但是,我還是沒能得到最新的朋友請求該會話的用戶。即使friend_in個表列數據那樣工作users table.How我可以讓我的工作,第二個代碼的ORDER BY id ASC

+0

'由USER_ID遞減選擇PERSON_NAME來自用戶的命令'所以最新的代碼將首先出現,然後在'foreach'中使用時,您將首先獲得最新的數據,或者使用'second sql'中的'order by id desc'命令。 –

+0

這樣做是沒有工作的兄弟,我想這會不會導致更高的'id'會出現在第一不管較低'id' sended的弗倫REQ第一,由於高說明ID出現在第一:/ –

+0

你想更高的ID先來或其他任何事情。 –

回答

1

SELECT person_name FROM users讓所有的用戶和訂單來自序號遞減,當你的循環它的foreach,你總能得到更高的ID,而不是最新的第二個查詢用戶。

我覺得沒有必要從表中得到用戶的所有用戶,然後循環他們,只是嘗試使用SQL這樣的:在第一個SQL使用

select from_fren, to_fren, users.person_name from friend_in, users where person_name = from_fren and to_fren = :me order by latest desc limit 1 
+0

哇,它工作得很好:D它現在提出最新的fren req.Data現在被提取的是'order by latest desc'這意味着它現在正在以最新的時間獲取數據。這正是我想要從我以前的代碼。它是加入還是聯合?你能解釋一下我剛剛在sql代碼上面做了什麼嗎? –

相關問題