Как заэкранировать спецсимволы для Mysql?

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
487
Благодарностей
148
Баллы
43
После распарса Json и записи в базу mysql она крашится из за встречаемых спецсимволов(которые в смайликах и также ') Как заэкранировать все символы в строке чтобы sql не ругался и писал правильно?
 

Sz5

Client
Регистрация
10.12.2012
Сообщения
157
Благодарностей
186
Баллы
43
Ругается в основном на ' вот этот символ.

Самый простой вариант
Код:
text.Replace("'","")
 
  • Спасибо
Реакции: lzlmrf

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
487
Благодарностей
148
Баллы
43
а нельзя записать в базу без изменения как то? Нужно сохранить эти символы. Пробывал литералом @ - ошибки в зенке нет, но в базе пустая строка тогда
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
487
Благодарностей
148
Баллы
43
рџ’‹рџ’Ђ Facebook Sexiest рџ’Ђрџ‹
вот такой знак - ’ где он на клаве то?
если копирую с текстовика - то пишет ошибку в зенке http://prntscr.com/ev9ui3
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 512
Благодарностей
990
Баллы
113
рџ’‹рџ’Ђ Facebook Sexiest рџ’Ђрџ‹
вот такой знак - ’ где он на клаве то?
если копирую с текстовика - то пишет ошибку в зенке http://prntscr.com/ev9ui3
Нету этого знака - это из-за разной кодировке... или через буфер обмена или приводи к одной или:
Что бы избежать инъекций в php рекомендуется htmlspecialchars, может есть подобная функция на C# или еще где, когда получаешь обратно преобразовываешь - htmlspecialchars_decode.
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
можно перед записью использовать
Convert.ToBase64String
а потом обратный процесс при взятии из базы - Convert.FromBase64String
 
Регистрация
08.07.2015
Сообщения
2 848
Благодарностей
712
Баллы
113

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
487
Благодарностей
148
Баллы
43
Спасибо парни за помощь. это проблема в кодировке самой базы как я понял. надо чтоб была utf8mb4 ..так советуют чтоб юникод записать. Но у меня так и не получилось эти смайлы туда засунуть. Удаляю все левое.
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 512
Благодарностей
990
Баллы
113
можно перед записью использовать
Convert.ToBase64String
а потом обратный процесс при взятии из базы - Convert.FromBase64String
размер растет :(
и жопа с текстовым поиском потом по базе если понадобится :(
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 512
Благодарностей
990
Баллы
113
Спасибо парни за помощь. это проблема в кодировке самой базы как я понял. надо чтоб была utf8mb4 ..так советуют чтоб юникод записать. Но у меня так и не получилось эти смайлы туда засунуть. Удаляю все левое.
поле в utf8_general_ci через php myadmin конвертни попробуй.
 

lzlmrf

Client
Регистрация
14.08.2015
Сообщения
487
Благодарностей
148
Баллы
43

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 512
Благодарностей
990
Баллы
113

nik-n

Client
Регистрация
05.11.2016
Сообщения
238
Благодарностей
19
Баллы
18
можно перед записью использовать
Convert.ToBase64String
а потом обратный процесс при взятии из базы - Convert.FromBase64String
а кубиком UrlEncode, а потом когда берешь Decode тоже ж проканет?
 

arhip1985

Client
Регистрация
31.10.2011
Сообщения
2 955
Благодарностей
781
Баллы
113
а кубиком UrlEncode, а потом когда берешь Decode тоже ж проканет?
это не для базы, наверно не прокатит
ещё можно такое в кубике си шарп
C#:
string ToBaza = MySql.Data.MySqlClient.MySqlHelper.EscapeString("переменная с Вашим текстом, требующим экранирование");
и соответственно должна быть подключена библиотека MySql
 

sten30

Client
Регистрация
05.09.2017
Сообщения
233
Благодарностей
28
Баллы
28
Исправили баг с испорченными спецсимволами при записи в базу?
utf8mb4 не записывает.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)