Получить вывод массива и использовать его mysql-запрос

У меня есть следующий 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;
 }
 }

Используя следующий скрипт, я получаю вывод всех идентификаторов пользователей, которые у меня есть в массиве:

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

 echo "$value ";

}

В моем случае этот вывод выводит мне 5 идентификаторов пользователей: 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, а не для всех. Как я могу заставить его работать на всех?

3 ответа

Можете ли вы показать мне, где вы положили $ sql? Если вы поместите его внутри цикла, он получит последнее значение id, равное 39, когда оно будет уничтожено.


Попробуйте поместить оператор sql внутри цикла foreach, таким образом он выполнит команду для каждого элемента массива:

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

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

}

Я не уверен, что вы все еще хотите вывести значения или нет - если они вам не нужны, тогда возьмите команду echo.


просто поставьте запрос в цикле

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

 }

licensed under cc by-sa 3.0 with attribution.