2015-05-29 105 views
0

我有一張表,其中必須使用MySQLi Query選擇信息並將其推送到PHP數組的末尾。從MySql Query獲取信息並將其放入PHP數組中

表的格式如下:

table = friends 

id user1 user1_id user2 user2_id datemade    accepted 
1 name1 1   name2 2   2015-05-27 03:24:32 1 
2 name3 3   name2 2   2015-05-27 03:24:32 1 
3 name3 3   name1 1   2015-05-27 03:24:32 1 
4 name4 4   name2 2   2015-05-27 03:24:32 1 
  • ID =的auto_incrementing號多事
  • USER1 =人的名字,要求作爲朋友
  • user1_id =那個人的特殊的唯一身份證
  • user2 =接受/拒絕友誼的人的姓名
  • user2_id =該人''特殊的唯一ID
  • datemade =它的製作日期:P
  • accepted =他接受了嗎? (不用擔心這個)

我想選擇所有用$ u的朋友。 在這個例子中,$ u的id是1(name是name1)。 運行查詢後,它會將其推送到friend_array的末尾。

所以,如果我打印此陣列的輸出將是:

2, 3 

因爲,ID = 1是朋友ID = 2,ID = 3

我應該怎麼做查詢和我將如何推到一個數組(我知道有關array_push,但我不知道如何實現它)?

+0

歡迎來到Stack Overflow!這個問題在信息上有點短暫。你可以分享你的嘗試,以及你遇到了什麼問題? –

+0

你有沒有想過正常化你的桌子?用user.id和friends.user_id1和friends.user_id2分別與用戶和朋友表建立外鍵關係? – OllyBarca

+0

@JayBlanchard我試過了,這個查詢'SELECT id,user2_id FROM $ friends WHERE user_id ='$ user_id''但我不知道如何使用它以及它返回的內容。 – MasudM

回答

0

請嘗試此代碼。它將返回所有用戶的朋友的數組。

$sql = "SELECT user1 AS user FROM friends UNION SELECT user2 AS user FROM friends"; 

$data = mysqli_query($sql); 

while ($v = mysqli_fetch_assoc($data)) { 
$sql = mysqli_query("SELECT * FROM `friends` where (user1 = '" . $v['user'] . "' or user2 = '" . $v['user'] . "')"); 
$arr = array(); 
while ($array = mysqli_fetch_assoc($sql)) { 

    if ($array['user1'] == $v['user']) { 
     $arr[$v['user']][] = $array['user2_id']; 
    } else { 
     $arr[$v['user']][] = $array['user1_id']; 
    } 
    } 
} 
+1

不使用['mysql_ *](https://wiki.php.net/rfc/mysql_deprecation)擴展函數,它已經在PHP 5.5版本中正式棄用 – Girish

+0

我不同意這個...它使用UNION ..這意味着它可能會以更好的方式重寫。 – geggleto

0

我終於明白了!

$sql = "SELECT COUNT(id) FROM friends WHERE user1_id='$log_id' AND accepted='1' OR user2_id='$log_id' AND accepted='1'"; 
$query = mysqli_query($db_conx, $sql); 
$query_count = mysqli_fetch_row($query); 
$friend_count = $query_count[0]; 
//echo($friend_count); //how many friends 
if($friend_count < 1){ 
    echo($u." has no friends yet"); 
} else { 
    $all_friends = array(); 
    $sql = "SELECT user1_id FROM friends WHERE user2_id='$log_id' AND accepted='1' ORDER BY RAND()"; 
    $query = mysqli_query($db_conx, $sql); 
    while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) { 
     array_push($all_friends, $row["user1_id"]); 
    } 
    $sql = "SELECT user2_id FROM friends WHERE user1_id='$log_id' AND accepted='1' ORDER BY RAND()"; 
    $query = mysqli_query($db_conx, $sql); 
    while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) { 
     array_push($all_friends, $row["user2_id"]); 
    } 
    $friendArrayCount = count($all_friends); 
} 

所以第一計數你有多少朋友來檢查,如果您有任何,如果你不是,溫度。出現的消息說沒有朋友。如果你有一些朋友,它會運行一個查詢來檢查你的朋友是否都是列 - user1_id和user2_id。然後,它會最後將所有內容添加到$ all_friends數組中,然後計算您擁有的朋友數量。 謝謝大家幫助!

相關問題