0

私は次のphpスクリプトを持っています。これは、選択したいすべてのuser_idを選択して配列に挿入します。

$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'  ";

しかし、上記のように書くと、クエリは1つの値に対してのみ機能します。私の場合は39であり、すべてではありません。どうすればすべての人に機能させることができますか?

4

3 に答える 3

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'  ";

    }
于 2013-07-21T16:15:28.757 に答える
0

Can you show me where you put $sql? If you put it inside loop, it'll get the last id's value is 39 when it fisnishes.

于 2013-07-21T16:22:26.190 に答える