Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как адаптировать запрос под MySQL 8?

Как адаптировать запрос под MySQL 8?


     09.12.2019    Общие вопросы по PHP, MySQL    1408

вопрос
Имеется вот такой php код DLE модуля с запросом к базе данных

$categoryWheres = array();
foreach ($categoriesArray as $categoryId) {
$categoryWheres[] = 'category regexp "[[:<:]](' . str_replace(',', '|', $categoryId) . ')[[:>:]]"';
}
$wheres[] = '(' . implode(' OR ', $categoryWheres) . ')';
break;


8 мускул (8.0.18) ругается на регулярку "category regexp" которая была убрана/заменена соответственно в MySQL 8

Вопрос к знатокам, как переписать данный кусок кода, а конкретно заменить в нём category regexp на что-то другое поддерживаемое MySQL 8 чтобы он не ругался?

Ответил: LazyDev


$categoryWheres = "category REGEXP '([[:punct:]]|^)(" . str_replace(',', '|', implode ('|', $categoriesArray)) . ")([[:punct:]]|$)'";

4 комментария

dj-avtosh
PHP-developer

dj-avtosh - 9 декабря 2019 22:31 -


https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Loner
Юзер

Loner - 9 декабря 2019 22:36 -

dj-avtosh,
да, спасибо я уже находил твое решение, но я не понял как конкретно нужно в этой строке кода
$categoryWheres[] = 'category regexp "[[:<:]](' . str_replace(',', '|', $categoryId) . ')[[:>:]]"';


поменять на FIND_IN_SET
можешь пожалуйста скинуть эту строку уже исправленную на FIND_IN_SET ?

dj-avtosh
PHP-developer

dj-avtosh - 9 декабря 2019 22:55 -

Наверно так (пишу с телефона):


$categoryWheres = 'FIND_IN_SET(' . $categoryId . ', category) > 0';

https://elkhan.ru
По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

Loner
Юзер

Loner - 9 декабря 2019 23:16 -

dj-avtosh,
спасибо всё работает корректно. отправил немного на ЯД за помощь

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх