PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Очередная порция ошибок в коде снова сводит с ума...
Sasha777
Отправлено: 03 Ноября, 2019 - 21:01:00
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Нояб. 2019  
Откуда: Россия


Помог: 0 раз(а)




при попытке поставить смайлик выдаёт ошибку PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\xF0\x9F\xA4\xA3' for column 'name' at row 1 in
и помогите с вкл и выкл гиперссылки, уже запарился
PHP:
скопировать код в буфер обмена
  1.  
  2. global $pdo;
  3.         if(empty($params[1]) || mb_strlen($params[1], 'utf-8') > 15) { $Wolf->send("используйте: «ник [имя до 15 символов]» 😔"); return; }
  4.         if($params[1] == mb_strtolower('вкл')) {
  5.                 $Wolf->send("гиперссылка включена!");
  6.                 return;
  7.         }
  8.         if($params[1] == mb_strtolower('выкл')) {
  9.                 //$sql = "UPDATE accounts SET name = '".$user['first_name']."' WHERE uid = ".$user['id'];
  10.                 $Wolf->send("гиперссылка выключена!");
  11.                 return;
  12.         }
  13.         $sql = "UPDATE accounts SET name = '".$params[1]."' WHERE uid = ".$user['id'];
  14.         $result = $pdo->query($sql);
  15.         $Wolf->sendt("Вы теперь <<".$params[1].">>");
  16.  

(Отредактировано автором: 03 Ноября, 2019 - 21:02:48)

 
 Top
Мелкий Супермодератор
Отправлено: 03 Ноября, 2019 - 21:43:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 11852
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 610 раз(а)




В отличии от прочего вопрос менее тривиален и проблема действительно может вводить в заблуждение.

Sasha777 пишет:
при попытке поставить смайлик

Проблема именно в этом.
Смайлики - это четырёхбайтовые символы utf8.
То что на данный момент отзывается на utf8 в mysql - не есть utf8, а лишь неполная реализация, максимум 3 байта на символ.

Для обработки смайликов в mysql вы должны использовать кодировку соединения и полей utf8mb4

PS: и почитайте про sql-инъекции.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB