2013-04-02 134 views
2

數據庫表:添加到陣列根據病情PHP

Table Name: friends 

    user_id | friend_id | accepted | key_id 
-------------------------------------------------- 
    123  | 234  |  2  | 1  
    123  | 456  |  2  | 2 
    123  | 789  |  1  | 3  
    222  | 123  |  2  | 4  
    498  | 123  |  2  | 5  

初始查詢(以獲得確認的好友)

$user_id=123; 
$query="SELECT * FROM friends WHERE 
    (user_id='$user_id' OR friend_id='$user_id') 
    AND accepted='2'"; 
$result=mysqli_query($dbc, $query); 
while($row=mysqli_fetch_array($result)) 
{ 
    if($row['user_id']==$user_id) 
    { 
     $friend[]=$row['friend_id']; 
    } 
    if($row['friend_id']==$user_id) 
    { 
     $friend[]=$row['user_id']; 
    } 
} 

print_r($friend); 

我所試圖做的是設置成friend陣列匹配編號是其中user_id等於$user_id或friend_id等於$user_id和接受的值是2.目前上述沒有返回任何東西,我不知道我是否正確格式化/創建數組。

在這種情況下,達到正確結果的最佳方法是什麼?我還需要格式化數組,以便可以使用IN()條件將其包含在另一個MYSQL語句中,以從另一個表中進行選擇。

+0

該代碼字面上是行不通。您在獲取電話時是否有錯字? – deceze

+0

這就是我在催促:) – Sideshow

+1

你的查詢返回任何結果? –

回答

1

您的查詢應該是這樣的

$query="SELECT * 
     FROM friends 
     WHERE (user_id = $user_id OR friend_id = $user_id) 
     AND accepted = '2'"; 

記住,你應該給整數字符串。它正確地提取記錄。

輸出

key_id user_id friend_id accepted 
------------------------------------- 
1  123  234   2 
2  123  456   2 
4  222  123   2 
5  489  123   2 
+0

感謝Raheel--我想你剛剛向我展示了我的方式的錯誤 - 在我的測試數據庫中,id值不是整數,但我將它們視爲整數。由於查詢是通過ajax請求,我沒有收到錯誤消息:) – Sideshow

0

你是不是傳遞所需要的參數mysqli_fetch_array

while($row=mysqli_fetch_array($result))) 

你可以閱讀更多in the documentation.

+0

對不起 - 應該從我原來的代碼中剪切和粘貼。我編輯了代碼。 – Sideshow

+0

你確定'$ row ['user_id']'和'$ row ['friend_id']'包含了什麼嗎? – Alvaro