![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
скажите считается ли допустимым наличие sql запросов внутри цикла while ,запрос не один ,если нет то как быть?
|
|||
|
||||
| Grig |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 809 Регистрация: 29.4.2005 Где: Иркутск Репутация: нет Всего: 16 |
по возможности лучше генерировать строку запроса, а потом ее выполнять.
Ну а так, конечно можно -------------------- |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
Maximum execution time of 30 seconds exceeded in Z:\home\localhost\www\www\game\function2.php on line 15
Это сообщение отредактировал(а) MoLeX - 4.5.2009, 06:44 |
|||
|
||||
| MoLeX |
|
||||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
Добавлено через 1 минуту и 54 секунды
ну время отпущенное на выполнение скрипта у тебя вышло... можешь увеличить set_time_limit(0); -------------------- Amazing |
||||
|
|||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
нет, считаю подобную структуру надуманной вот к примеру у нас есть меню, пункты и подпункты, хранятся они в одной или двух таблицах - не важно. не раз встречал такую реализацию - выборка пунктов, затем при построении каждого пункта происходил дополнительный запрос с выборкой подпунктов. возникает вопрос: зачем? если нам нужно выбрать все подпункты, то почему бы сразу не организовать этот вопрос, соответствующим образом упорядочив данные? если выбираются подпункты только для ондого пункта, то вообще не понятно зачем while запросов может быть довольно много, но в любом случае нужно знать сколько и зачем они нужны |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Можно! Если на сайте с вашим движком будет сидеть хотя-бы один человек, тогда допустимо...
А вот если там будет уже десять человек, то тогда тебе нужно будет добавить 10 кластеров... Если сто человек - сто кластеров!!! Надеюсь вы догадываетесь, что такое кластер и его среднюю стоимость! Зачем вам цикл? Достаете данные одним запросом, а уже в цикле обрабатываете!
or die() - используется только когда возникают критические ошибки... Например: не удалось подключится к базе данных, тогда or die(), а не после каждого запроса... Уверен, что у вас каждая пятая перезагрузка умирает |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
это суенарий примады неделю его делал а вот теперь он мне машину вещает ))))в нём 12 запросов из них много выборок
нужно каждый день через программу крон запускать этот скрипт )))) При включение вешается всё напроч. ДА а кстате пока незабыл что если использовать функции Output Buffering Control Output Control чтобы недопустить перегрузки памяти |
|||
|
||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
Не бойся, если твой скрипт сильно зажрется, то PHP сам его вырубит! Так что утечек быть не может...
Лучше сразу составляй нужный запрос, получай все данные, а потом в цикле обрабатывай ресурс... Это будет куда легче...
Мой тебе совет - удали его с машины... |
|||
|
||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
||||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
суть запросов тоже не проста ))
существует пирамида где каждому человеку нужно повышать рейтинг за купленный сертификат формируются запросы к базе данных ,которые определяют иего нижестоящих ,кол во купленных сертификатов если кол во нижестоящих нужное кол-во происходип пеопределение этого человека на другой уровень уровней 5 соотведственно 5 ступеней нижестоящих людей нужных для закрытия пирамиды |
|||
|
||||
| Shark |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
после прочтения этого:
ты сам-то понял че напесал????супервладислав.. а ты себя суперпутиным не считаешь? |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
понял
|
|||
|
||||
| Photon |
|
|||
|
Злобный программер ![]() ![]() Профиль Группа: Участник Сообщений: 282 Регистрация: 27.2.2009 Где: Таганрог Репутация: 10 Всего: 12 |
Вот это что такое?
Как я понимаю - это бесконечный цикл, ибо если в базе есть хоть одна запись с заданными условиями, то $db->sql_numrows() положительное число. Я, конечно, понимаю, что неплохо получается копировать откуда-то куски кода, но надо же и думать хоть иногда, и читать то, что копируешь. supervladislav, я уже говорил: не занимайся не своим делом. PHP - явно не твоё. -------------------- With best regards.. |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
чем мне заниматься это не твоё дело
|
|||
|
||||
| Shark |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
supervladislav,
если хочешь этим заниматься.... тогда найми себе репитора, чтоб он тебя учил... может при трате денег ты начнешь думать головой 1. КУПИ себе домой книги по РНР 2. скачай с нета книгу Джона Коггзолла (и на этом форуме ты ее можешь найти) 3. ПОЛЬЗУЙСЯ поиском! 4. по твоим постам можно понять твое мышление! т.е: ты сидишь, что-то делаешь (без думно копируешь).. увидел, что есть ошибка в коде при попытке вывести что-то в браузер.... и сразу сюда пишешь вопрос. |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
у меня есть книги по php
)))когда не понимаю в чём ошибка я пишу сюда почему не выполняется условие внутри цикла
Это сообщение отредактировал(а) supervladislav - 4.5.2009, 20:57 |
|||
|
||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
Потому что $db->sql_fetchrow($mainlink) возвращает false
|
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
проходит 4 интерполяции ,ровно столько скольоко у меня записей в базе ))))
false же возвращается только когда записей в базе данных нет |
|||
|
||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
||||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
4 ое
|
|||
|
||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
Значит $maindat['id'] не равно 147 и $maindat['category'] не равно 0.
Вы это хотели услышать? |
|||
|
||||
| supervladislav |
|
||||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
нет не это а вот это
И ещё скажите пожалуйста при выводе данных из базы )))каждая новая строка выводящаяся из базы это - это новая интерполяция цикла так? Почему у меня в одной переменной несколько значений даже если в конце ставлю
|
||||
|
|||||
| SneG0K |
|
|||
|
Max Mara ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1887 Регистрация: 1.12.2007 Где: Wis Dells Репутация: 7 Всего: 54 |
supervladislav, слушай, ощущение, что книги, про которую ты говорил - у тебя нет! Блин, это вопросы детского сада...
И еще, тебе кто-нибудь когда-нибудь говорил, про оформление кода?
Отсюда вывод, значение пустое, число меньше двух! |
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
ко всему прочему нужно проверять переменную на существование)))но почему переменная не грохается она в конце цикла стоит
|
|||
|
||||
| enof |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
||||
|
||||
| supervladislav |
|
||||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
вот скажи мне надо проверять дополнительно переменную на существование )))) каждая интерация цикла это вывод из базы так? Переменная вот такая
|
||||
|
|||||
| enof |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
!!!!
я то откуда знаю, надо смотреть исходя из ситуации. Если переменной может и не быть, то возможно вывалится варниг/нотайс, не помню. Эти переменные берутся из базы, значит они 100% будут. ###, итерация. При каждом вызове mysql_fetch_* указатель смещается на следующую запись. Это вообще к чему? |
||||
|
|||||
| Shark |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
это выглядит как условие а это:
переменная! |
||||
|
|||||
| Photon |
|
|||
|
Злобный программер ![]() ![]() Профиль Группа: Участник Сообщений: 282 Регистрация: 27.2.2009 Где: Таганрог Репутация: 10 Всего: 12 |
А какого ж ты тогда тут вопросы задаешь, если это не наше дело, чем тебе заниматься? Решай тогда свои проблемы сам. -------------------- With best regards.. |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
Пальцы скользят по гладкой стене
Не за что на ней зацепиться Какой классный кирпич поставили мне На эту стену можно молиться Мощный фундамент из знаний воздвиг На основе инженерной мысли Ничем эту стену не сокрушить Даже если в лепёшку готов ты разбиться Но верю я в силы данные мне Особенно в мощь своей головы Не суждено устоять той стене Сумею сломать без лишней воды Вот только спецы посоветуйте просто Как лучше крушить жжёный кирпич? С разбегу врубиться макушки костью? Или кунг-фу для ноги изучить? Что вы показываете? Тропинку в обход? Там указатель и карта дана? Зачем мне путь для слабаков, народ?! Верю, стена слабее меня! |
|||
|
||||
| Shark |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
bars80080, + 1...
|
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
Ну прямо маяковский какой-то ))))
Я извеняюсь перед вами за тупые вопросы ,но мне больше обратиться не к кому . Скажите пожалуйста если внутри цикла while выполняется выборка из базы если я создаю условие например [php code=php] if($maindat['people']==2 and $maindat['category']==0 and $maindat['sertifikat']==0) { $login=$maindat['login']; [/code] тоесть в переменную будут складываться те логины у которых $maindat['people']>2 так |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
нет, только те у которых $maindat['people']==2, $maindat['category']==0 и $maindat['sertifikat']==0 |
|||
|
||||
| enof |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 837 Регистрация: 23.1.2009 Где: Санкт-Петербург Репутация: 30 Всего: 35 |
Это каким идиотом надо быть? Ну ни один нормальный человек не сможет сделать такой вывод. Забудьте про пхп или возьмите наконец-то книжку в руки и читайте. |
||||
|
|||||
| Shark |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 18.6.2006 Где: Москва Репутация: 4 Всего: 4 |
supervladislav, читай
|
|||
|
||||
| supervladislav |
|
|||
![]() ///\\\///\\\///\\\ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 18.5.2006 Репутация: -8 Всего: -9 |
ну комуто повеселить то вас надо
|
|||
|
||||
| voral |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 158 Регистрация: 16.3.2008 Где: Иваново Репутация: нет Всего: нет |
Очевидно, что здесь хотелось сделать нечто следующее
Совершать запросы в цикле безусловно можно и, иногда, наиболее оптимально. Простейший пример: делаем выборку, обрабатываем данные и по условию на основании расчета выполняем некий запрос. Все нужно решать индивидуально для каждого случая и структуры данных. Простой пример
Если нам нужен всего 2% записей из таблицы t1. На кой черт нам лишний раз обращаться к t2. (При left join на сколько я помню будет легче, но не всегда left join подходит) Судя по приведенному куску у вас количество подчиненых храниться в базе. Следовательно вам логичнее сделать запрос с условием где $maindat['people'] > требуемого числа. |
||||||
|
|||||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |