Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
-1 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 32

Одно обращение клиента 20 запросов в MySQLI

06.08.2014, 10:34. Показов 1025. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемы форумчане.
У меня имеется цикл while с 20 итерациями и внутрь этого цикла вложен еще один цикл while который обращается к БД при каждой итерации первого цикла.
Я что хочу у Вас спросить! Это вообще приемлемо? Столько обращений к БД за один раз, так вообще дела делаются или же нужен какой-то иной подход?
Буду очень признателен за ваши ответы.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.08.2014, 10:34
Ответы с готовыми решениями:

Ошибка подключения к БД: Warning: mysqli::mysqli() [mysqli.mysqli]: (28000/1045): Access denied for user
Есть магазин на OpenCart, необходимо сделать, чтобы при введении посетителем определенной инфы в форме эта инфа сохранялась в базе данных....

Warning: mysqli::mysqli() [mysqli.mysqli]: php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен
Денвер запущен, локалхост доступен, через cmd логинюсь в mysql.exe успешно. Вот что выводится на странице при попытке подключения к...

Множество запросов mysqli
Есть допустим необходимость, записать в БД сразу много записей. Если я делаю экспорт БД, то phpmyadmin мне пишет так: INSERT INTO...

10
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
06.08.2014, 10:50
нет, чаще всего не приемлимо. Зачем вложенные циклы?
0
-1 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 32
06.08.2014, 11:01  [ТС]
Цель вложенных циклов следующая:
Кто-то из пользователей (далее главный пользователей) оставляет сообщение (с текстом, музыкой и пр.) и таких сообщение может быть порядка десяти, но уже эти сообщения могут комментировать другие пользователи и что у нас получается в итоге: сообщения главного пользователя выводятся в цикле, а сообщения пользователей которые ответили на эти сообщения выводятся в самом цикле и тоже через цикл.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
06.08.2014, 11:04
ну в таком случае, пожалуй, приемлимо.. Только неужели вы выводите сразу все полностью? Обычно (для оптимизации и удобства) выводят число комментов с кнопкой а-ля "показать комментарии", при нажатии на которую отправляется запрос (например, аяксом) на вывод комментов... Представьте, что будет при 100 пользователях и 100 комментах на каждой записи, к примеру. Сколько будет грузиться страница и сколько вы будете листать?
0
-1 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 32
06.08.2014, 11:08  [ТС]
Не, ну разумеется у меня имеется постраничная навигация которая работает при помощи ajax.
Все равно мне код почему-то не нравится, может быть вложенные запросы через хранимые процедуры реализовать?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
06.08.2014, 11:21
Вы не поняли. При выводе только числа комментариев делать вложенные запросы не нужно - с этим справится JOIN. В принципе, ваш код тоже можно переписать на JOIN-ы, но тогда придется добавлять проверку
0
-1 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 32
06.08.2014, 11:26  [ТС]
Аааа, Вы об этом.
Но я вообще хочу чтобы первые 2 или 3 вложенных комментария отображались, мне кажется так более эстетично.


P.S. А не лучше в дополнительное поле таблицы (комментарии от Главных пользователей) записывать количество вложенных сообщений и уже при выводи доставать их оттуда, а не осуществлять еще один запрос с тем же самым JOIN?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
06.08.2014, 11:34
Цитата Сообщение от хакер ботаник Посмотреть сообщение
P.S.
смотря с какой стороны посмотреть. С одной стороны да, лучше. С другой - необходимо при каждом добавлении коммента обновлять число комментов в другой таблице
0
-1 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 32
06.08.2014, 12:08  [ТС]
Это да, но ведь оставляют сообщения единицы, а просматривают сотни. Выходит что добавлении мы будем обращаться к БД один раз нежели при получении данных 10 раз.

+ к этому, запись ведь проще осуществить с точки зрения MySQL нежели делать выборку, с учетом того что полей в БД может быть миллион.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
06.08.2014, 12:24
Цитата Сообщение от хакер ботаник Посмотреть сообщение
запись ведь проще осуществить с точки зрения MySQL
зависит от типа движка таблицы
0
-1 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 32
06.08.2014, 12:51  [ТС]
MyISAM
Я немного не так выразился.
При добавлении нового сообщения нам в любом случае нужно будет проверять существования переданного ID (то есть ID главного сообщения для которого пользователи оставляют свои сообщ.) поэтому нам нужно будет осуществить запрос SELECT, но т.к. нам нужно осуществить обновление а не просто проверка существования, то мы SELECT заменим на UPDATE если он вернет true то выполняем код дальше и в итоге у нас не будет лишнего запроса при добавлении нового сообщения, а при выводе у нас опять же не будет лишних JOIN
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.08.2014, 12:51
Помогаю со студенческими работами здесь

Несколько запросов в одной строке в php mysqli
Гуру, подскажите пожалуйста, такое возможно??? Как-то раньше вроде получалось... Надо: $db = new mysqli($init_mysql_host,...

Mysqli получить только одно значение
привет! я делаю запрос $query = $conn->prepare('SELECT * FROM users WHERE id = ?'); $query->bind_param("i", 1); ...

Одно MySQLi соединение на весь сайт
Доброго времени суток. У меня есть сайт. CMS своя. Есть функции и классы в CMS, и в каждой функции идёт отдельное MySQLi соединение....

Не знаю в чем проблема к бд обращение идет, выдает такую ошибку Warning: mysqli_query() expects parameter 1 to be mysqli
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,...

Единые объект клиента для всех запросов в express.js
Приветствую. Интересует запись данных в handle клиента. Работая с TCP делаю так handle.myObject = {} В Express.js же ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru