Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
MySQL

Оптимизация обращения к БД MySQL

20.10.2018, 11:40. Показов 3041. Ответов 31

Студворк — интернет-сервис помощи студентам
Добрый день.

У меня есть массив, в котором хранятся id в определенном порядке, в котором статьи должны выводится на экран, например:
PHP
1
$poryadok = array (2,1,4,11);
Есть таблица, где находятся id (в таблице находятся больше статей, чем указано в $poryadok), title, image и text.

Я вывожу статьи в порядке предусмотренном в $poryadok.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<? for($ii=0;$ii<count($poryadok); $ii++;){
 
$connection = mysql_connect ("localhost","root",""); // подключение к mysql
$db = mysql_select_db ("monkid"); //выбор базы данных monkid
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER SET 'cp1251'");
if(!$connection || !$db) {exit(mysql_error());}
 
$interesnoe = mysql_query("SELECT * FROM interesnoe WHERE id=$poryadok[$ii]");
mysql_close();
$row = mysql_fetch_array ($interesnoe); ?>
<div><?= $row ['title']; ?> </div>
<div><?= $row ['image']; ?> </div>
<div><?= $row ['text']; ?> </div>
 
} //конец for
Получается так, что сколько элементов находится в массиве $poryadok, а в данном примере их 4, столько раз и будет обращение к MySQL.
Можно ли как-то один раз записать всю таблицу в $interesnoe, закрыть соединение с сервером MySQL, а потом вытащить уже из $interesnoe значения title, image и text, привязанные к id?

Заранее благодарен за ответ.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2018, 11:40
Ответы с готовыми решениями:

Обработка ошибок обращения к MySQL
Приветствую. Я только начинаю изучать PHP и MySQL. Дали задание произвести выборку из базы данных. С обработкой ошибок. Саму выборку...

Оптимизация запросов к MySQL
Кто хорошо разбирается в оптимизации запросов, подскажите, как оптимизировать, например, следующий запрос: SELECT ...

Оптимизация кода php+mysql
Здрасте! Проблема вот в чем - хостинг пишет что потребляю много ресурсов! На Cron повесил с десяток php скриптов заходящих в базу и...

31
1319 / 1011 / 232
Регистрация: 01.10.2018
Сообщений: 3,925
21.10.2018, 12:05
Студворк — интернет-сервис помощи студентам
ft4l, плагиат
0
Невнимательный
 Аватар для ft4l
3139 / 1335 / 362
Регистрация: 08.02.2013
Сообщений: 7,829
Записей в блоге: 2
21.10.2018, 12:07
PHP
1
2
3
4
5
while ($row = mysql_fetch_assoc($interesnoe)) {
    $id = $row['id'];
    unset($row['id']);
    $rows[$id] = $row;
}
0
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
21.10.2018, 12:36  [ТС]
Цитата Сообщение от ft4l Посмотреть сообщение
$rows[$id] = $row;
Где в данном случае указатель на title из строки 1?
0
1319 / 1011 / 232
Регистрация: 01.10.2018
Сообщений: 3,925
21.10.2018, 12:56
Цитата Сообщение от alanat Посмотреть сообщение
Где в данном случае указатель на title из строки 1?
Перечитайте тему. Это примеры "подготовительных" циклов.

Добавлено через 1 минуту
И в PHP для обращения к элементу двумерного массива принято использовать две отдельные скобки.

Добавлено через 1 минуту
Вам и так уже написали больше, чем нужно, а вы все носом воротите
1
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
22.10.2018, 16:27
Лучший ответ Сообщение было отмечено alanat как решение

Решение

я не понял, зачем ему 2 раза советовали fetch_array()
а ещё не понял, зачем ему упорно советуют пользоваться mysql_fetch_array(), а не $mysqli
короче:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$db = new mysqli('localhost', 'root', 'pass', 'monkid');
 
// проверка подключения
if ($db->connect_error())
    {die("Ошибка подключения: {$db->connect_errno} {$db->connect_error}");}
 
$db->query("SET NAMES 'cp1251'");
$db->query("SET CHARACTER SET 'cp1251'");
 
$res = $db->query("SELECT id, title, image, text FROM interesnoe WHERE id IN (2,5,8,10,12) ORDER BY id");
while ($row = $res->fetch_assoc())
{
?>
 
<div><?= $row ['title']; ?> </div>
<div><?= $row ['image']; ?> </div>
<div><?= $row ['text']; ?> </div>
 
<?php
}
$res->close();
$db->close(); ?> // вообще-то ПХП их сам закрывает
зы: переходите на utf8.
1
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
22.10.2018, 16:53  [ТС]
Цитата Сообщение от полудух Посмотреть сообщение
переходите на utf8
Рассматривал это, но не вижу явных плюсов.
0
1319 / 1011 / 232
Регистрация: 01.10.2018
Сообщений: 3,925
22.10.2018, 17:23
полудух, автору нужен был определенный порядок, в котором должны выводиться статьи. Я не увидел этого в вашем коде. Хотя, судя по отметке об ответе, он наверное все же не смог правильно донести суть своего вопроса (у меня было такое предположение).
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
22.10.2018, 17:26
обычно все виды "порядков" внутри БД организовываются
если прям надо, то:
PHP
1
while ($row = $res->fetch_assoc())    {$arr[$row['id']] = $row;}
0
1319 / 1011 / 232
Регистрация: 01.10.2018
Сообщений: 3,925
22.10.2018, 17:27
полудух, все это ему было сказано и показано.
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
22.10.2018, 18:08
Цитата Сообщение от alanat Посмотреть сообщение
Рассматривал это, но не вижу явных плюсов.
ну вот попадётся вам в тексте слово на арабском/китайском/немецком и увидите
0
12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
22.10.2018, 23:36  [ТС]
Цитата Сообщение от полудух Посмотреть сообщение
// проверка подключения
if ($db->connect_error())
{die("Ошибка подключения: {$db->connect_errno} {$db->connect_error}");}
Сделал так:
PHP
1
2
3
4
5
6
7
8
9
<?php
 
$db = new mysqli('localhost', 'root', 'pass', 'monkid');
 
// проверка подключения
if ($db->connect_error())
    {die("Ошибка подключения: {$db->connect_errno} {$db->connect_error}");}
 
$db->close(); ?> // вообще-то ПХП их сам закрывает
Показывает ошибку:
HTML5
1
Fatal error: Call to undefined method mysqli::connect_error() in Z:\home\monkid.ru\www\mpchi3.php on line 6
0
209 / 191 / 49
Регистрация: 15.03.2016
Сообщений: 1,230
23.10.2018, 08:38
if ($db->connect_errno) {
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2018, 08:38

PHP+MySQL оптимизация при подщете количества записей в каждой категории
Доброго времени суток всем! Столкнулся со следюющей проблемой: есть сайт с обявлениями, на нем много категорий, по каждой из которых надо...

Оптимизация кода PHP+MYSQL. При большом количестве посетителей: ошибка 500
Эти кодом я вывожу тумбы к видео на страницу из базы и их названия. &lt;?php $video = mysql_query ('SELECT id,title,page,img,duration FROM...

Перезапуск обращения к mysql (выбрать заного)
Всем привет. Задался вопросом. Вот к примеру есть выборка 1 ид рандомно из таблицы $query_rand = mysqli_query($link, &quot;SELECT * FROM...

Типы оптимизация: черная оптимизация, серая оптимизация и белая оптимизация
Много много лет назад, на заре становления профессии &quot;оптимизатора&quot; в какой то умной книжке был создан миф. Это миф о цветовой индефикации...

Mysql запрос оптимизация
красткая структура базы: gorod id name magazin id id_gorod name comments id


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
После бана на Пикабу не работает авторизация аккаунта с Яндекса.
Hrethgir 09.07.2026
В частности https:/ / auto. ru/ logbook/ zapret-na-vozhdenie-posle-65-let_1cf28789-07b4-4c75-a2f7-4cd4edf9deeb тут хотел оставить комментарий такой Зрите в корень - монополизация на разработку программ. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru