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

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

20.10.2018, 11:40. Показов 3073. Ответов 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,930
21.10.2018, 12:05
Студворк — интернет-сервис помощи студентам
ft4l, плагиат
0
Невнимательный
 Аватар для ft4l
3139 / 1337 / 362
Регистрация: 08.02.2013
Сообщений: 7,836
Записей в блоге: 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,930
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,930
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,930
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru