0

我有以下 php 脚本,它选择我想要选择的所有 user_ids 并将其插入到数组中。

$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 而不是全部。我怎样才能使它适用于所有人?

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

尝试将 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 命令。

于 2013-07-21T16:11:49.383 回答
0

你能告诉我你把 $sql 放在哪里吗?如果你把它放在循环中,它会在结束时得到最后一个 id 的值为 39。

于 2013-07-21T16:22:26.190 回答