У меня есть класс продукта, который при создании экземпляра извлекает данные из таблицы «продукт», а также создает внутри него объект «Категория» (product-> category), который извлекает данные из таблицы категорий. Моя проблема заключается в том, что происходит, когда перечислены несколько продуктов из одной категории, для создания объекта категории выполняются несколько равных запросов, поскольку они относятся к одной категории. Как это решить?PHP: Выполнение одного и того же запроса снова и снова?
ответ
Используйте JOIN в вашем SQL:
SELECT *
FROM product
LEFT JOIN category ON product.category_id = category.id;
Используйте завод, который создает объекты, а также предоставляют возможность данные для продукта/категории, которые передаются в конструктор. Завод загружает данные для всех продуктов, которые будут перечислены, чем создаются экземпляры объектов продукта, предоставляя уже полученные данные.
Вам нужно будет создать слой, который перехватывает и/или кэширует ваши запросы. Когда он увидит, что вы запрашиваете категорию с определенным идентификатором, она должна отображать эту категорию из своего кеша, а если ее нет, она должна быть восстановлена, а затем кэшировать ее, поэтому во время запроса одна и та же строка не будет запрашиваться больше чем единожды.
Выполнение этого вручную - no-go, просто выберите достойный ORM, который сделает это за вас.
Внутри цикла выполнение запроса sql не является хорошей практикой.
Что вы можете сделать, это оставить таблицу продуктов с таблицей категорий.
$select = SELECT *
FROM product
LEFT JOIN category ON product.category_id = category.id;
Затем выполнить запрос, а затем классифицировать товары в категории основе , как вы можете запустить петлю
$result = mysql_query($select);
while($data = mysql_fetch_assoc($result)){
$product_info['product_name'] = $data['product_name'];
$product_info['price'] = $data['product_price'];
$product[$data['category']][$data['product_id']] = $product_info;
}
Этот цикл будет делать магию, что это поможет вам классифицировать продукты, подпадающие под эту категорию. И вы можете более эффективно отображать свои данные.
- 1. Выполнение одного и того же запроса снова и снова
- 2. Загрузка одного и того же SWF снова и снова. Есть лучший способ сделать это?
- 3. Легкий способ запуска одного и того же теста юнита снова и снова?
- 4. Как использовать ООП, чтобы избежать повторения одного и того же кода снова и снова?
- 5. Покупка одного и того же предмета снова и снова - В App Purchase Android
- 6. Выполнение запроса MongoDB снова и снова с использованием C# и замедления
- 7. PHP MVC Controller создан снова и снова
- 8. PHP Модифицировать возврат цикла снова и снова
- 9. Стоп снова и снова
- 10. gradlewAssemble, генерирующий тот же APK снова и снова
- 11. Ошибка анализа снова и снова
- 12. Array печать одной и той же ячейки снова и снова
- 13. RabbitMQ возвращает одно и то же сообщение снова и снова
- 14. Shell скрипт запускает PHP файлы снова и снова
- 15. Есть ли чистый способ проверить запрос аннулирования в BackgroundWorker без повторного ввода одного и того же кода снова и снова?
- 16. PHP и singletons снова
- 17. Еогеасп() выполняет ту же линию снова и снова
- 18. Уведомления запускается снова и снова
- 19. Диалог сообщений снова и снова
- 20. Выполнение одинаковых вещей снова и снова ... как остановить это?
- 21. Сжатие и декомпрессия JPEG снова и снова
- 22. JToken.ToObject дает такое же значение снова и снова
- 23. Переименование файлов одинаково снова и снова
- 24. База данных Android overWriting той же строки снова и снова
- 25. addEventListener добавление снова и снова
- 26. JFrame открывается снова и снова
- 27. Служба уничтожается снова и снова
- 28. Сайт Magento снова и снова
- 29. код зацикливается снова и снова
- 30. Force Close снова и снова
показать свой код. – debianek