Либо сделать запрос: select * from users where steamid = ? и в php проверить вернул ли что-то запрос, либо использовать синтаксис insert into users (steanid, name, avatar) values ('$steamid', '$nickname', '$avatarfull') on duplicate key update name = $nickname, avatar = $avatarfull. В этом случае если при попытке вставить запись если поймаем исключение, что запись с таким ключом уже существует, то существующая запись будет изменена.
unfapable: Можно использовать разные решения, тут никто не скажет так делать надо а так не надо. Можно использовать статичный метод и статичный массив для хранения адресов. Можно использовать и синглтон с кэшированием. Пример в ответе выше.
Однако, жесть) Разбираться не буду. Перепиши все с нуля. Не комментируй куски кода, а сотри все! Сделай хотя бы так чтобы было два куска кода. В одном - формирование массива, без всяких echo. В другом "куске" уже выводи html. Общие советы:
- Давай адекватные названия переменным - самому будет легче. Готов поспорить - через пол часа отдыха ты и сам не разберешься что там написано.
- Используй хотя бы mysqli, а лучше PDO.
- Запросы в цикле зло. Сделай в цикле формирование условий, например получи такой id-шников. Потом запрос SELECT * FROM products WHERE product_id in (1,2,3,...)
- Фильтры нужно хранить в отдельной таблице, а не сериализованным массивом. Тогда всю задачу можно было бы решить одним запросом к БД.
Chronic 86 Проблема гугле, на которую вы любезно предоставили ссылку, описана для случая когда mysql установлен локально. У меня же база на другом сервере, а проблема моя заключается в том, что приложение пытается открыть сокет для работы с локальной БД, несмотря на то, что в конфиге явно указан ip внешнего сервера.