12 / 12 / 1
Регистрация: 16.07.2012
Сообщений: 777
MySQL

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

20.10.2018, 11:40. Показов 2958. Ответов 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
1315 / 1007 / 232
Регистрация: 01.10.2018
Сообщений: 3,911
21.10.2018, 12:05
Студворк — интернет-сервис помощи студентам
ft4l, плагиат
0
Невнимательный
 Аватар для ft4l
3121 / 1307 / 359
Регистрация: 08.02.2013
Сообщений: 7,659
Записей в блоге: 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
1315 / 1007 / 232
Регистрация: 01.10.2018
Сообщений: 3,911
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
1315 / 1007 / 232
Регистрация: 01.10.2018
Сообщений: 3,911
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
1315 / 1007 / 232
Регистрация: 01.10.2018
Сообщений: 3,911
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru