Прежде всего, улучшите ваш SQL:
SELECT
img.*
FROM
foobar foo
INNER JOIN foobar_img img ON
foo.id = img.id
WHERE
foo.id = $key
Вам нужно будет перебирать только один массив.
Кроме того, похоже, что вы на самом деле выбираете только одну строку, так что выпадение одной строки является ожидаемым поведением.
Кроме того, пожалуйста, защитите себя от внедрения SQL, используя mysql_real_escape_string () :
$query3 = "SELECT * FROM foobar WHERE id='" .
mysql_real_escape_string($key) . "'";
Обновление : Как подсказал Дэн, пожалуйста, запустите этот запрос в консоли MySQL, чтобы получить результат обратно, чтобы вы знали, с чем играете. Когда вы ограничиваете запрос одним идентификатором, вы, вероятно, вытягиваете только одну строку назад. При этом я понятия не имею, сколько $ ключей находится в $ вещи, но если оно переворачивается один раз, то это будет один.
Возможно, вам лучше перебрать $ stuff и создать предложение IN для вашего SQL:
$key_array = "";
foreach($stuff as $key)
{
$key_array .= ",'" . mysql_real_escape_string($key) . "'";
}
$key_array = substr($key_array, 1);
...
WHERE foo.id IN ($key_array)
Это даст вам набор результатов с полным списком, вместо того, чтобы отправлять кучу запросов SELECT в БД. Будьте добры к вашей БД и, по возможности, используйте операции на основе множеств. MySQL это оценит.
Я также укажу, что это выглядит так, как будто вы используете текстовые первичные ключи. Целочисленные инкрементные ключи лучше всего работают как PK, и я настоятельно рекомендую вам использовать их!