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

Как исправить ошибку MariaDB при добавлении апострофа?


     26.08.2020    апостроф    Общие вопросы, MySQL    1194

вопрос
Доброго времени суток. Подскажите пожалуйста, как исправить ошибку MariaDB при добавлении апострофа в новость?
Если добавить апостроф в тег или ключевое слово, с остальным не проверял, например: Patrick's, новость добавляется, но при переходе в полную новость после публикации, выдает ошибку базы.

Пример ошибки:



Заранее всем спасибо

Ответа пока нет


9 комментариев

TeraMoune
Эксперт

TeraMoune - 27 августа 2020 00:36 -

Попробуйте пропускать значение через $db->safesql, прежде чем передавать тег в запрос.
 $db->safesql(text) 

Тестовый репозиторий установки плагинов: teramoune

ushkom
Юзер

ushkom - 27 августа 2020 00:37 -

Это плагин нужно сделать? Не сильно селен в этом.

TeraMoune
Эксперт

TeraMoune - 27 августа 2020 00:57 -

Нет, это функция принадлежит классу для работы с базой данных. Найдите в исходных кодах движка применение данной функции и посмотрите как её использовать, а то вроде и написал пример и всё ровно не понятно. Вот и найдите все применения функции и поймите как применить её.

Тестовый репозиторий установки плагинов: teramoune

ushkom
Юзер

ushkom - 17 сентября 2020 22:43 -

Пробовал по всякому, пример:


Не получается. Если в доп поле и теге присутствует апостроф, при заходе в полную новость ошибка базы данных

TeraMoune
Эксперт

TeraMoune - 18 сентября 2020 03:39 -

Применять надо на $value. Но лучше в самом конце перед запросом после функции implode.
P.S. Не знаю где и зачем это делаете, ведь в движке все это и так есть и теги с апострофом заходят без ошибок.

Тестовый репозиторий установки плагинов: teramoune

ushkom
Юзер

ushkom - 18 сентября 2020 07:31 -

Я не передумываю, если в тег вписать Patrick's, новость добавляется, но при заходе в нее получаю ошибку:

The Error returned was:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 's'' at line 1
SQL query:

SELECT COUNT(*) as count FROM dle_tags WHERE tag='The Patrick's'

Хотя возможно плагин какой то меняет что то.

Я делал себе плагин подсчета количества тегов, и ругается на эту строчку, запрос:
$counttag = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_tags WHERE tag='{$value}'");

ushkom
Юзер

ushkom - 18 сентября 2020 09:49 -

Подправил код, получилось так:


Но теперь теги выводятся со слешем перед апострофом

dj-avtosh
PHP-developer

dj-avtosh - 18 сентября 2020 10:15 -


$counttag = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_tags WHERE tag='" . $db->safesql($value) . "'");
$counttag = $counttag['count'];				
				
if( $config['allow_alt_url'] ) $tags[] = "<span><a href=\"" . $config['http_home_url'] . "tags/" . rawurlencode( $url_tag ) . "/\">" . $value . "<span class=\"counttag\">" . $counttag . "</span></a></span>";
else $tags[] = "<span><a href=\"$PHP_SELF?do=tags&amp;tag=" . rawurlencode( $url_tag ) . "\">" . $value . "<span class=\"counttag\">" . $counttag . "</span></a></span>";

По заказам пишем сюда: @Rud00y

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

ushkom
Юзер

ushkom - 18 сентября 2020 10:45 -

Спасибо всем, разобрался. Вот что получилось:


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

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

наверх