Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Запрос к бд в цикле...

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: На сколько это плохо?
likvidator
Отправлено: 14 Июня, 2013 - 11:38:49
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


Наткнулся я на такую фразу:
Цитата:
Ударим запросом в цикле по базе, выполним план по забрасыванию базы запросами!

И задумался... Вот (псевдо)код:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. // инклудим коннект
  4. $result = mysql_query("SELECT userid FROM chat WHERE chatid='$chatid' AND delid= '' OR delid= '$id' ORDER BY idofmessage DESC LIMIT 5", $db);
  5. $arr = array();
  6. while ($myrow = @mysql_fetch_assoc($result)) $arr[] = $myrow['userid'];{}
  7. $i=-1;
  8. while($i++<sizeof($arr)){
  9. $res = mysql_query("SELECT name FROM user WHERE userid='$arr[$i]';
  10. $res=mysql_fetch_array($res);
  11. echo $res[0];}
  12. ?>

Так на сколько это плохо?
P.S. Планирую забыть о mysql,как о страшном сне, и перейти на mysqli. Комментарии по этому поводу тоже приветствуются...

(Отредактировано автором: 14 Июня, 2013 - 11:39:58)

 
 Top
EuGen Администратор
Отправлено: 14 Июня, 2013 - 11:47:40
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




likvidator
Настолько же плохо, насколько отражает фразу в первой цитате. Весь Ваш цикл можно заменить одним JOIN.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
likvidator
Отправлено: 14 Июня, 2013 - 11:50:32
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


EuGen пишет:
likvidator
Настолько же плохо, насколько отражает фразу в первой цитате. Весь Ваш цикл можно заменить одним JOIN.

ну да...теперь понял http://ru.wikipedia.org/wiki/Join_(SQL) ...
(Добавление)
и можно посмотреть на оптимизированный код?

(Отредактировано автором: 14 Июня, 2013 - 11:52:01)

 
 Top
EuGen Администратор
Отправлено: 14 Июня, 2013 - 12:48:09
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




PHP:
скопировать код в буфер обмена
  1. $rSelect = mysql_query("SELECT userid, name FROM chat LEFT JOIN user ON chat.userid=user.userid WHERE chatid='$chatid' AND delid= '' OR delid= '$id' ORDER BY idofmessage DESC LIMIT 5", $db);
  2. while($rgRow=mysql_fetch_array($rSelect))
  3. {
  4.    echo($rgRow['name'].PHP_EOL);
  5. }

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
likvidator
Отправлено: 14 Июня, 2013 - 13:03:11
Post Id


Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Март 2012  


Помог: 4 раз(а)

[+]


EuGen пишет:
PHP:
скопировать код в буфер обмена
  1. $rSelect = mysql_query("SELECT userid, name FROM chat LEFT JOIN user ON chat.userid=user.userid WHERE chatid='$chatid' AND delid= '' OR delid= '$id' ORDER BY idofmessage DESC LIMIT 5", $db);
  2. while($rgRow=mysql_fetch_array($rSelect))
  3. {
  4.    echo($rgRow['name'].PHP_EOL);
  5. }

?

ммм...благодарю!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB