Почему этот код не работает?
В чем же тут проблема? Да в том, что все сессии хранятся по умолчанию в одной папке - /tmp. При запуске другого скрипта на сервере, со стандартным временем жизни сессии, запускается также сборщик мусора, который все «старые», по его меркам, сессии из папки удаляет.
И как вы можете программировать так, что вы даже не замечаете синтаксических ошибок. а они ведь самые очевидные. Используйте современные IDE/редакторы, чтобы он вам указывал на ошибки в синтаксисе.
Вы, наверное, имели в виду тип таблицы, а не БД. Нет такого понятия как тип БД. InnoDB быстрее. А самое главное, в отличие от MyISAM поддерживает внешние ключи, которые сейчас просто незаменимы.
1. Экранируйте запросы при помощи mysql_real_escape_string
2. Попробуйте выполнить ваш запрос в каком-нибудь клиенте MySQL. ТОлько вместо переменной какое-нибудь существующее значение.
3. Функция mysql_query возвращает не массив, а вы этот результат используете в foreach.
4. Приводите ошибки, которые бросает интерпретатор.
5. Даже если результат mysql_query был бы массивом, с чего вы решили, что его элементы - это объекты?
6. Название файла хранить в таблице не нужно в вашем случае (у юзера 1 аватар и есть ID). Называйте соответственно файлы. Намного удобней.