2013-07-21 59 views
0

我有以下的PHP腳本,它選擇並插入到數組中,我想選擇的所有user_ids。獲取數組的輸出,並使用它mysql查詢

$query = mysql_query(" SELECT `user_id` FROM users WHERE (surname LIKE '$name%' AND name LIKE '$surname%') OR (surname LIKE '$surname%' AND name LIKE '$name%') "); 

    while($run = mysql_fetch_array($query)){ 
     $user_id = $run['user_id']; 

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

      if(mysql_num_rows($check_friend_query) == 1 ){  
        $array[] = $user_id; 
      } 
    } 

通過使用那麼下面的腳本,我感到我有數組中的所有用戶ID的輸出:

foreach($array as $key => $value) { 

    echo "$value </br>"; 

} 

在我的情況下,這個輸出中打印了我5個用戶id:32,36 ,37,38,39

我要的是下面的SQL查詢中使用這些值:

$sql = " SELECT `name`, `surname`, `email`, `user_id` FROM users WHERE ((surname LIKE '$name%' AND name LIKE '$surname%') OR (surname LIKE '$surname%' AND name LIKE '$name%')) AND `user_id`='$value' "; 

但如果像上面寫的那樣,查詢只適用於一個值,在我的情況下是39而不是全部。我怎樣才能讓它爲所有人工作?

+0

如果你的每個用戶都有一個唯一的'user_id',你只能通過執行'WHERE user_id = $ value'來選擇它們,這將會簡單得多,並且可以解決你的問題。 – Wilq

+0

是否做到了......但僅適用於值39(恰好是最後一個),不適用於所有值 – user2491321

+0

您是在使用'$ value'進行foreach循環之後還是使用該查詢? – Wilq

回答

0

嘗試把sql語句foreach循環裏面,這樣,它會爲數組中的每一項執行命令:

foreach($array as $key => $value) { 

    echo "$value </br>"; 
    $sql = " SELECT `name`, `surname`, `email`, `user_id` FROM users WHERE ((surname LIKE '$name%' AND name LIKE '$surname%') OR (surname LIKE '$surname%' AND name LIKE '$name%')) AND `user_id`='$value' "; 

} 

我不知道如果你仍然要輸出的值或不 - 如果你不需要它們,那麼把echo命令拿出來。

0

只是把循環查詢

foreach($array as $key => $value) { 

    $sql = " SELECT `name`, `surname`, `email`, `user_id` FROM users WHERE ((surname LIKE '$name%' AND name LIKE '$surname%') OR (surname LIKE '$surname%' AND name LIKE '$name%')) AND `user_id`='$value' "; 

    } 
0

你能告訴我,你把$ SQL?如果你把它放在循環裏面,它會得到最後一個id的值是39。