Ответы пользователя по тегу MySQL
  • Как правильно сохранить часть верстки в MySQL для дальнейшего прочтения в PHP?

    @Quieteroks
    php программист
    Вы идете в не правильном направлении.

    А если Вы смените оформление через пол года? Или просто решите в блок добавить новые элементы для динамической обработке через js? Или какие то скрытые элементы, доступные администратору?

    Нужно блоки сохранять как структуру. В зависимости от настроек блока, вы можете хранить его ключевые параметры, которые и меняют блок. Тогда вы можете хранить и "выбранный дизайн", которых может быть в последующем добавлено множество. И параметры, что могут его изменить, даже цветовую схему и подобное.

    В момент развертывания на сайте, блоки сохраняете в кэш, полностью страницу или слайды с несколькими блоками. Что ускорит загрузку и формирование блоков., но позволит в любой момент так же просто изменить любую его часть. Как в коде блока, так и в выборе пользователя по его настройке.
    Ответ написан
    Комментировать
  • В каком виде хранить данные на хостинге?

    @Quieteroks
    php программист
    Шифрование?
    Тот же base64 уже чутка усложнит задачу. Но если шифровать, то лучше сразу адекватным способом.
    Ответ написан
    4 комментария
  • В чем может быть проблема при запросе?

    @Quieteroks
    php программист
    Поле уникальное, а Вы туда засовываете что то такое же, что уже существует.
    Ответ написан
    Комментировать
  • Как ускорить процесс выполнения запроса в БД?

    @Quieteroks
    php программист
    Какой тип таблиц используете?
    Если InnoDB, то при частых обновления и вставках, в больших таблицах, вы всегда будете получать подобный результат. Самый простой способ в этом случае ускорить, перенести таблицу в MyISAM.

    Второе, это подготавливайте инсерты пачками. Даже если в строку вы соберете более 100 записей и разом их запихнете, получится быстрее, чем каждый раз выполнять этот запрос.

    И третье. Обновляйте по id, зачем же вы ищете, потом опять ищете для обновления по url. Строчку вы уже получили, можно так считать. Используйте сразу id. И вообще запрос упростите, пишите SELECT `id` FROM... Другие данные Вам не нужны. И ускорите получение и ускорите обновление.

    Кстати. Четвертое. Если вы все равно всем записям меняете поле data на 1, можно так же обновление сделать пачкой. Собирайте id найденных записей и обновляйте через UPDATE `name` SET `data` = '1' WHERE `id` IN (1,2,5,7,88,123).
    Ответ написан
  • Какой вес ячейки VARCHAR в БД MYSQL?

    @Quieteroks
    php программист
    В официальной документации дан хороший ответ на Ваш вопрос:
    www.mysql.ru/docs/man/CHAR.html
    Ответ написан
    2 комментария
  • Где моя ошибка в php?

    @Quieteroks
    php программист
    Я бы копнул в сторону выборки:
    $result00 = mysqli_query("SELECT COUNT(*) as `cnt` FROM page");
    $temp = mysqli_fetch_assoc($result00);
    $posts = $temp['cnt'];

    Поскольку вы просите ассоциативный массив, а обращаетесь к списку. Меняйте подход выборки.
    Ответ написан
    Комментировать
  • Как отследить все проблемы на VDS?

    @Quieteroks
    php программист
    Когда у нас висел мускул, мы так же искали причины возникновения проблемы. Логи чистые, запросов на сервер не много. Процессор и память свободны, но сайт и мускул лежат. Причины могут варьироваться от используемого на сервере, и логи не всегда могут помочь. Нужен комплексный подход к поиску причин.

    В первый раз у нас повесила длительный таймаут на телеграмм боте.
    Во второй раз нас повесил длительный и частно выполняемый запрос к базе. Нагрузка выросла и запрос показал все свою несостоятельность. Выявить такую проблему помог запрос SHOW FULL PROCESSLIST;

    В любом случае, ищите проблемы. Не всегда в логах есть ответы, иногда нужно их искать там, где вы даже не ждете.
    Ответ написан
  • Как ускорить вставку в цикле MySQL?

    @Quieteroks
    php программист
    А вы не пробовали сформировать один пакетный запрос и выполнить его?

    INSERT INTO `table` (`field`) VALUES (1), (2), (3);
    Ответ написан
    1 комментарий
  • Как сохранить & ' " в Mysql php?

    @Quieteroks
    php программист
    Можно просто экранировать эти символы.
    В каждом драйвере для этих целей имеется специальная функция.

    php.net/manual/ru/mysqli.real-escape-string.php
    php.net/manual/ru/pdo.quote.php

    Или использоваться подготовленные запросы, тогда за Вас всю работу сделает драйвер.
    Но не всегда же получается использовать подготовленный запрос, поэтому знать об экранировании желательно.
    Ответ написан
    Комментировать
  • Где ошибка в SQL-запросе?

    @Quieteroks
    php программист
    Где запятые? Поля желательно однозначно экранировать ковычками ` ибо ключевые слова (charset) могут сильно повлиять на запрос:
    UPDATE `vhosts_kp`
    SET `servname` = 'yandex.com',
           `alias` = 'yandex.com www.yandex.com',
           `email` = 'dart@xxx.ru',
           `indexfiles` = '',
           `charset` = ''
    WHERE `userid` = 'admin'
        AND `name` = 'mysite'
    Ответ написан
    Комментировать
  • Как лучше организовать подключение к MySQL?

    @Quieteroks
    php программист
    Смотря каким драйвером вы пользуетесь для подключения. Возможно есть функция ping (для mysqli точно есть), которой можно проверять соединение и переподключаться заново. А так же демоны на pcntl имеют свойство терять соединение во время форка потомков.
    Ответ написан
    2 комментария
  • Как вывести данные из MSQL при помощи php в определенном порядке?

    @Quieteroks
    php программист
    1 вариант:
    PHP тут не при чем. Просто добавьте в запрос ORDER BY `field`

    Если динамически выбирать поле из запроса, то брать поле, а лучше код из "справочника".
    А после добавляешь в запрос.

    2 вариант:
    Нужно собрать корректный массив, в вашем случае с вложениями по департаментам:
    $departments = [];
    foreach($row as $items) {
        if (!isset($departments[$item['DEPT_NAME']])) {
            $departments[$item['DEPT_NAME']] = [];
        }
        $departments[$item['DEPT_NAME']][] = $items;
    }

    А после вы можете их сортировать как вам удобно. Благо для этого полно функций в php. Сами департаменты отсортировать нужно по ключам (krsort, ksort). А если еще и внутри, то тут уже через посложнее, но тоже возможно, посмотрите примеры использования (usort - пример с многомерными массивами).
    Ответ написан
    8 комментариев