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

  • Автор темы Автор темы lzlmrf
  • Дата начала Дата начала

lzlmrf

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

Самый простой вариант
Код:
Развернуть Свернуть Копировать
text.Replace("'","")
 
  • Спасибо
Реакции: lzlmrf
а нельзя записать в базу без изменения как то? Нужно сохранить эти символы. Пробывал литералом @ - ошибки в зенке нет, но в базе пустая строка тогда
 
рџ’‹рџ’Ђ Facebook Sexiest рџ’Ђрџ‹
вот такой знак - ’ где он на клаве то?
если копирую с текстовика - то пишет ошибку в зенке http://prntscr.com/ev9ui3
 
рџ’‹рџ’Ђ Facebook Sexiest рџ’Ђрџ‹
вот такой знак - ’ где он на клаве то?
если копирую с текстовика - то пишет ошибку в зенке http://prntscr.com/ev9ui3
Нету этого знака - это из-за разной кодировке... или через буфер обмена или приводи к одной или:
Что бы избежать инъекций в php рекомендуется htmlspecialchars, может есть подобная функция на C# или еще где, когда получаешь обратно преобразовываешь - htmlspecialchars_decode.
 
можно перед записью использовать
Convert.ToBase64String
а потом обратный процесс при взятии из базы - Convert.FromBase64String
 
Спасибо парни за помощь. это проблема в кодировке самой базы как я понял. надо чтоб была utf8mb4 ..так советуют чтоб юникод записать. Но у меня так и не получилось эти смайлы туда засунуть. Удаляю все левое.
 
можно перед записью использовать
Convert.ToBase64String
а потом обратный процесс при взятии из базы - Convert.FromBase64String
размер растет :(
и жопа с текстовым поиском потом по базе если понадобится :(
 
Спасибо парни за помощь. это проблема в кодировке самой базы как я понял. надо чтоб была utf8mb4 ..так советуют чтоб юникод записать. Но у меня так и не получилось эти смайлы туда засунуть. Удаляю все левое.
поле в utf8_general_ci через php myadmin конвертни попробуй.
 
можно перед записью использовать
Convert.ToBase64String
а потом обратный процесс при взятии из базы - Convert.FromBase64String

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

и соответственно должна быть подключена библиотека MySql
 
Исправили баг с испорченными спецсимволами при записи в базу?
utf8mb4 не записывает.
 

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