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+MySQL

 PHP.SU

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


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

> Описание: Оптимизация кода
VeNick
Отправлено: 02 Февраля, 2014 - 12:43:02
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2014  


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




Не нашел категории "оптимизация", так что напишу тут.

Смысл проблемы в том, что в конфиг файле нужно создавать переменные - массивы с БД. Можно ли как то оптимизировать запрос?

PHP:
скопировать код в буфер обмена
  1.  
  2. //шлем
  3. if($user['helm'] != 0)
  4. {
  5.         $helm = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[helm]' AND owner='$user[login]'"));
  6. }
  7. //Правая рука
  8. if($user['rhand'] != 0)
  9. {
  10.         $rhand = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[rhand]' AND owner='$user[login]'"));
  11. }
  12. //Левая рука
  13. if($user['lhand'] != 0)
  14. {
  15.         $lhand = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[lhand]' AND owner='$user[login]'"));
  16. }
  17. //Доспехи
  18. if($user['arms'] != 0)
  19. {
  20.         $arms = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[arms]' AND owner='$user[login]'"));
  21. }
  22. //Ботинки
  23. if($user['boots'] != 0)
  24. {
  25.         $boots = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[boots]' AND owner='$user[login]'"));
  26. }
  27. //плащь
  28. if($user['coat'] != 0)
  29. {
  30.         $coat = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[coat]' AND owner='$user[login]'"));
  31. }
  32. //налечники
  33. if($user['handss'] != 0)
  34. {
  35.         $handss = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[handss]' AND owner='$user[login]'"));
  36. }
  37. //Пояс
  38. if($user['belt'] != 0)
  39. {
  40.         $belt = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[belt]' AND owner='$user[login]'"));
  41. }
  42. //амулет
  43. if($user['amulet'] != 0)
  44. {
  45.         $amulet = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[amulet]' AND owner='$user[login]'"));
  46. }
  47. //медаль
  48. if($user['medal'] != 0)
  49. {
  50.         $medal = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[medal]' AND owner='$user[login]'"));
  51. }
  52. //кольцо
  53. if($user['ring'] != 0)
  54. {
  55.         $ring = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[ring]' AND owner='$user[login]'"));
  56. }
  57. //Книга
  58. if($user['book'] != 0)
  59. {
  60.         $book = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[book]' AND owner='$user[login]'"));
  61. }
  62. //Свиток
  63. if($user['roll'] != 0)
  64. {
  65.         $roll = mysql_fetch_array(mysql_query("SELECT * FROM inv WHERE id='$user[roll]' AND owner='$user[login]'"));
  66. }
  67.  


Сейчас при 1 обновлении страницы, выполняется множество запросов к базе данных, разумеется чем меньше тем лучше. В данном случае хотелось бы что их было на 9 меньше Хорошо
 
 Top
Мелкий Супермодератор
Отправлено: 02 Февраля, 2014 - 13:29:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Выберите всё по
owner=? and id in (нужные id через запятую)


-----
PostgreSQL DBA
 
 Top
VeNick
Отправлено: 02 Февраля, 2014 - 13:38:14
Post Id


Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Янв. 2014  


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $sql=mysql_query("SELECT * FROM inv WHERE owner='$user[login]' AND wear='on'");
  3. while($inv=mysql_fetch_array($sql))
  4. {
  5.     if($user['slot1'] == $inv['id'])
  6.    {
  7.         $slot1=$inv;
  8.    }
  9.    if($user['slot2'] == $inv['id'])
  10.    {
  11.         $slot2=$inv;
  12.    }
  13. }
  14.  


так будет работать корректно и быстрее?
 
 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