Добро пожаловать на сайт SEDBY

Вопросы и ответы по MySQL

MySQL это компонент веб-сайта, вызывающий большое количество вопросов у разработчиков. Постараемся ответить на наиболее частые вопросы и прояснить нюансы использования баз данных с проектом на базе Cotonti Siena.

  • 610 просмотров
  • Обновлено: 20 февраля 2026 17:46
  • admin
  • 0
Вопросы и ответы по MySQL
Вопросы и ответы по теме "Базы данных MySQL"
1. Как исправить ошибку mysql 3065 "This is incompatible with DISTINCT"?

При отсутствии root-доступа поможет выполнение данного запроса:

Cot::$db->query("SET sql_mode = 'TRADITIONAL';");

Необходимо убрать из запроса поля, не входящие в группировку (GROUP BY) и не являющиеся агрегатными функциями от других полей. Например:

/* Неправильно: */
$query = "SELECT *, COUNT(tag) AS tagQTY FROM $db_tag_references GROUP BY tag, tag_area ORDER BY tagQTY DESC LIMIT 10";
/* Правильно: */
$query = "SELECT tag, tag_area, COUNT(tag) AS tagQTY FROM $db_tag_references GROUP BY tag, tag_area ORDER BY tagQTY DESC LIMIT 10";
Для суммирования используется функция SUM(). Прмиенительно к Cotonti Siena это будет примерно так:
$query = "SELECT SUM(page_id) AS ids_total FROM $db_pages WHERE page_cat = 'blog'";
$ids_total = Cot::$db->query($query)->fetchColumn();
$t->assign('PAGE_IDS_TOTAL', $ids_total)

Выполните следующий SQL-запрос:

SELECT * FROM cot_pages WHERE page_id IN (val1, val2, val3) ORDER BY FIELD(page_id, val1, val2, val3);

Пример использования с плагином Pagelist:

{PHP.page_ids|sedby_pagelist('pagelist.sometpl', '', 'field(page_id, $this)', 'page_id in ($this)')}

Используйте backslash (обратную наклонную) для экранирования:

UPDATE cot_pages SET page_text = REPLACE(page_text, "src=\"datas", "src=\"https://sed.by/datas")

Этот запрос заменит в текстах страниц все относительные пути к картинкам на абсолютные. Еще несколько примеров:

\' одиночные кавычки (“'”)
\" двойные кавычки (“"”)
\t символ табуляции
\\ обратная наклонная (backslash) (“\”)
\% символ процента “%”

Выполните следующий SQL-запрос:

UPDATE cot_pages SET page_text = REPLACE(page_text, "img-responsive", "img-fluid")

Он заменит в тексте всех страниц подстроку "img-responsive" на "img-fluid"

Блок пользователя
Регистрация на нашем сайте позволит вам общаться на форумах и получить доступ к другому полезному функционалу
Вы вошли как Гость