@MrCheatEugene

Let's Encrypt конфликтует с MySQL?

Есть функция, завёрнутая в try.
Пытаюсь выполнить запрос.
Функция крашится, после чего срабатывает catch.
Вот ошибка:
exception 'mysqli_sql_exception' with message 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's Encrypt,R3,my-coin.ga,mod_ssl/2.4.29,OpenSSL/1.1.1,TLSv1.3,false,NULL,TLS_CHAC' at line 1' in /var/..../main.php:31

Строка 31:
$link->query("INSERT INTO `log`(`operaion`, `SERVER`, `result`) VALUES ('balance','".implode(",",$_SERVER)."','".implode(",", ($res))."')");

где $link - обьект подключения к MySQL базе данных через mysqli.
Подозреваю что
's Encrypt,R3
это Let's Encrypt.
Вопрос. А почему? И как это пофиксить?
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
delphinpro
@delphinpro
frontend developer
Типичная sql инъекция.
Строки нужно экранировать, прежде чем пихать в базу.
https://www.php.net/manual/ru/mysqli.real-escape-s...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Hanneman
' в строке let's encrypt портит запрос, так эта строка в запросе выглядит так: ' let's encypt'.
Читайте про экранирование символов.
Ответ написан
Комментировать
toxa82
@toxa82
Нет. У вас просто запрос не корректный. В данных есть одиночная кавычка, которая ломает ваш запрос. Используйте плэйсхолдеры или экранирование данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы