Замена кавычки(") на спецсимвол (")

Обсуждение MAV Direct ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
gopstop2007
✯ Ветеран ✯
Сообщения: 1266
Зарегистрирован: 25 Март 2009, 21:55

Замена кавычки(") на спецсимвол (")

Сообщение gopstop2007 » 13 Февраль 2013, 23:08

Добрый вечер!
Клиентская программа записывает наименование товара на сервер MySQL, нужно экранировать спецсимволы. На сервере надо " , а у клиента ". Где в MAV "прикрутить", чтобы с минимальными телодвижениями, при отправке и получении данных, форматировать строку с нужными требованиями?

Clarion 6.3 ABC (MAV ODBC ver 1.00 коммерческая)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Аватара пользователя
Admin
Администратор
Сообщения: 3456
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Re: Замена кавычки(") на спецсимвол (")

Сообщение Admin » 14 Февраль 2013, 6:03

Подробнее можно?
Двойная кавычка вполне может присутствовать в названии товара и SQL скрипту не должна мешать.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 15:32
Откуда: Москва, Зеленоград

Re: Замена кавычки(") на спецсимвол (")

Сообщение Andrew™ » 14 Февраль 2013, 10:37

кавычки и запятычки могут присутствовать в строковых полях, на формат SQL запроса они никоим образом не влияют т к все исходные данные биндуются (любое поле в запросе превращается ВСЕГДА в знак вопроса (?)) и получается что то типа:

Код: Выделить всё

10617296 Binding field 1 "SessionRef"         = 4389
10617296 Binding field 2 "Thread"             = 2
10617296 Binding field 3 "CountEvents"        = 0
10617296 Binding field 4 "ProcName"           = Import SAP Excel reports
10617296 Parsing Cursor : INSERT INTO [dbo].[DT.Events] ("SessionRef","Thread","CountEvents","ProcName") VALUES(?,?,?,?) SELECT SCOPE_IDENTITY()
а получить этот символ можно из объекта MAVCursor

Код: Выделить всё

SELF.Db.GetQUOTE_CHAR()

gopstop2007
✯ Ветеран ✯
Сообщения: 1266
Зарегистрирован: 25 Март 2009, 21:55

Re: Замена кавычки(") на спецсимвол (")

Сообщение gopstop2007 » 14 Февраль 2013, 13:12

Admin писал(а):Подробнее можно?
Двойная кавычка вполне может присутствовать в названии товара и SQL скрипту не должна мешать.
Проблем с кавычками нет, надо чтобы на сервере (интернет магазин) строка на клиенте была: Апельсин "Turk",
а записана на сервере в таком виде: Апельсин &quote;Turk&quote;.
Проблема в том, что при запуске клиента загружается строка из сервера!
Идет двухсторонний обмен изменений, можно поменять строку на сервере и она должна загрузится на клиента: Апельсин "Turk"
и наоборот, на клиенте изменяется строка и она загружается на сервер с таком виде: Апельсин &quote;Turk&quote;
Надо, чтобы на клиенте в процессе любого обращения к базе при выводе строки, поиске и т.п. (&quote;) заменялась на (")
Где сделать вставку в MAV чтобы можно было "обрабатывать" получаемые или отправляемые строки в нужном формате.
SELF.Db.GetQUOTE_CHAR()
Это что за зверь такой :) Как им воспользоваться , если он решает проблему указанную выше, подробнее пожалуйста.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Аватара пользователя
Admin
Администратор
Сообщения: 3456
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Re: Замена кавычки(") на спецсимвол (")

Сообщение Admin » 14 Февраль 2013, 13:59

gopstop2007 писал(а):Проблем с кавычками нет, надо чтобы на сервере (интернет магазин) строка на клиенте была: Апельсин "Turk",
а записана на сервере в таком виде: Апельсин &quote;Turk&quote;
Проблема в том, что при запуске клиента загружается строка из сервера!
В web движке при выводе данных нужно использовать htmlspecialchars()
+ смотрим:
http://www.php.su/functions/?htmlentities
http://www.php.su/functions/?html-entity-decode

А вообще все равно проблемы не понял.
Вы должны хранить данные в таблице в нормальном виде.
В таблице не должны присутствовать &quote;
:)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

Аватара пользователя
Admin
Администратор
Сообщения: 3456
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Re: Замена кавычки(") на спецсимвол (")

Сообщение Admin » 14 Февраль 2013, 13:59

Если у вас есть Web программер то он что то ламерит... Если это вы то читайте... разберетесь.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

gopstop2007
✯ Ветеран ✯
Сообщения: 1266
Зарегистрирован: 25 Март 2009, 21:55

Re: Замена кавычки(") на спецсимвол (")

Сообщение gopstop2007 » 14 Февраль 2013, 14:28

ну уж лучше mysqli_real_escape_string, чем htmlspecialchars баловаться... + мы используем готовый движок которые требует " и переписывать весь движок нет смысла, с учетом того что данная программа должна работать со всеми похожими сайтами без телодвижений на самих сайтах... php движок в базу пишет правильно как надо... прикладная программа на прямую общается с базой, и я никак не могу повлиять на те данные которые она вливает в мускуль...
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Аватара пользователя
Admin
Администратор
Сообщения: 3456
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Re: Замена кавычки(") на спецсимвол (")

Сообщение Admin » 14 Февраль 2013, 15:02

gopstop2007 писал(а):ну уж лучше mysqli_real_escape_string
Лишь бы вам было хорошо :)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса

Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 15:32
Откуда: Москва, Зеленоград

Re: Замена кавычки(") на спецсимвол (")

Сообщение Andrew™ » 15 Февраль 2013, 8:50

gopstop2007 писал(а):
SELF.Db.GetQUOTE_CHAR()
Это что за зверь такой :) Как им воспользоваться , если он решает проблему указанную выше, подробнее пожалуйста.
для работы с БД используем курсорные объекты MAVSelect MAVUpdate MAVDelete MAVExecute, все они наследники от MAVCursor, у которого есть Db.GetQUOTE_CHAR() который вернёт нужный СИМВОЛ

gopstop2007
✯ Ветеран ✯
Сообщения: 1266
Зарегистрирован: 25 Март 2009, 21:55

Re: Замена кавычки(") на спецсимвол (")

Сообщение gopstop2007 » 16 Февраль 2013, 19:30

для работы с БД используем курсорные объекты MAVSelect MAVUpdate MAVDelete MAVExecute, все они наследники от MAVCursor, у которого есть Db.GetQUOTE_CHAR() который вернёт нужный СИМВОЛ
Андрей, пожалуйста пример в пару строк работы Db.GetQUOTE_CHAR(), а то описания нет :( Набрел на http://forum.clarionlife.net/phpbb/view ... hook#p7505 , можно скинуть ссылку на пример работы, а то ссылка на http://mavcla.arsis.ru/Download/w_hook.rar не работает. Я так понимаю, с помощью хуков тоже можно решить проблему?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

gopstop2007
✯ Ветеран ✯
Сообщения: 1266
Зарегистрирован: 25 Март 2009, 21:55

Re: Замена кавычки(") на спецсимвол (")

Сообщение gopstop2007 » 18 Февраль 2013, 15:15

У кого есть - поделитесь пожалуйста. Спасибо.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Ответить