Замена кавычки(") на спецсимвол (")
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- ✯ Ветеран ✯
- Сообщения: 1704
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Замена кавычки(") на спецсимвол (")
Добрый вечер!
Клиентская программа записывает наименование товара на сервер MySQL, нужно экранировать спецсимволы. На сервере надо " , а у клиента ". Где в MAV "прикрутить", чтобы с минимальными телодвижениями, при отправке и получении данных, форматировать строку с нужными требованиями?
Clarion 6.3 ABC (MAV ODBC ver 1.00 коммерческая)
Клиентская программа записывает наименование товара на сервер MySQL, нужно экранировать спецсимволы. На сервере надо " , а у клиента ". Где в MAV "прикрутить", чтобы с минимальными телодвижениями, при отправке и получении данных, форматировать строку с нужными требованиями?
Clarion 6.3 ABC (MAV ODBC ver 1.00 коммерческая)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Admin
- Администратор
- Сообщения: 3962
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 28 раз
- Поблагодарили: 22 раза
- Контактная информация:
Re: Замена кавычки(") на спецсимвол (")
Подробнее можно?
Двойная кавычка вполне может присутствовать в названии товара и SQL скрипту не должна мешать.
Двойная кавычка вполне может присутствовать в названии товара и SQL скрипту не должна мешать.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Re: Замена кавычки(") на спецсимвол (")
кавычки и запятычки могут присутствовать в строковых полях, на формат SQL запроса они никоим образом не влияют т к все исходные данные биндуются (любое поле в запросе превращается ВСЕГДА в знак вопроса (?)) и получается что то типа:
а получить этот символ можно из объекта MAVCursor
Код: Выделить всё
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()
Код: Выделить всё
SELF.Db.GetQUOTE_CHAR()
-
- ✯ Ветеран ✯
- Сообщения: 1704
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Re: Замена кавычки(") на спецсимвол (")
Проблем с кавычками нет, надо чтобы на сервере (интернет магазин) строка на клиенте была: Апельсин "Turk",Admin писал(а):Подробнее можно?
Двойная кавычка вполне может присутствовать в названии товара и SQL скрипту не должна мешать.
а записана на сервере в таком виде: Апельсин "e;Turk"e;.
Проблема в том, что при запуске клиента загружается строка из сервера!
Идет двухсторонний обмен изменений, можно поменять строку на сервере и она должна загрузится на клиента: Апельсин "Turk"
и наоборот, на клиенте изменяется строка и она загружается на сервер с таком виде: Апельсин "e;Turk"e;
Надо, чтобы на клиенте в процессе любого обращения к базе при выводе строки, поиске и т.п. ("e;) заменялась на (")
Где сделать вставку в MAV чтобы можно было "обрабатывать" получаемые или отправляемые строки в нужном формате.
Это что за зверь такой Как им воспользоваться , если он решает проблему указанную выше, подробнее пожалуйста.SELF.Db.GetQUOTE_CHAR()
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Admin
- Администратор
- Сообщения: 3962
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 28 раз
- Поблагодарили: 22 раза
- Контактная информация:
Re: Замена кавычки(") на спецсимвол (")
В web движке при выводе данных нужно использовать htmlspecialchars()gopstop2007 писал(а):Проблем с кавычками нет, надо чтобы на сервере (интернет магазин) строка на клиенте была: Апельсин "Turk",
а записана на сервере в таком виде: Апельсин "e;Turk"e;
Проблема в том, что при запуске клиента загружается строка из сервера!
+ смотрим:
http://www.php.su/functions/?htmlentities
http://www.php.su/functions/?html-entity-decode
А вообще все равно проблемы не понял.
Вы должны хранить данные в таблице в нормальном виде.
В таблице не должны присутствовать "e;
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 3962
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 28 раз
- Поблагодарили: 22 раза
- Контактная информация:
Re: Замена кавычки(") на спецсимвол (")
Если у вас есть Web программер то он что то ламерит... Если это вы то читайте... разберетесь.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- ✯ Ветеран ✯
- Сообщения: 1704
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Re: Замена кавычки(") на спецсимвол (")
ну уж лучше mysqli_real_escape_string, чем htmlspecialchars баловаться... + мы используем готовый движок которые требует " и переписывать весь движок нет смысла, с учетом того что данная программа должна работать со всеми похожими сайтами без телодвижений на самих сайтах... php движок в базу пишет правильно как надо... прикладная программа на прямую общается с базой, и я никак не могу повлиять на те данные которые она вливает в мускуль...
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Admin
- Администратор
- Сообщения: 3962
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 28 раз
- Поблагодарили: 22 раза
- Контактная информация:
Re: Замена кавычки(") на спецсимвол (")
Лишь бы вам было хорошоgopstop2007 писал(а):ну уж лучше mysqli_real_escape_string
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Re: Замена кавычки(") на спецсимвол (")
для работы с БД используем курсорные объекты MAVSelect MAVUpdate MAVDelete MAVExecute, все они наследники от MAVCursor, у которого есть Db.GetQUOTE_CHAR() который вернёт нужный СИМВОЛgopstop2007 писал(а):Это что за зверь такой Как им воспользоваться , если он решает проблему указанную выше, подробнее пожалуйста.SELF.Db.GetQUOTE_CHAR()
-
- ✯ Ветеран ✯
- Сообщения: 1704
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Re: Замена кавычки(") на спецсимвол (")
Андрей, пожалуйста пример в пару строк работы Db.GetQUOTE_CHAR(), а то описания нет Набрел на http://forum.clarionlife.net/phpbb/view ... hook#p7505 , можно скинуть ссылку на пример работы, а то ссылка на http://mavcla.arsis.ru/Download/w_hook.rar не работает. Я так понимаю, с помощью хуков тоже можно решить проблему?для работы с БД используем курсорные объекты MAVSelect MAVUpdate MAVDelete MAVExecute, все они наследники от MAVCursor, у которого есть Db.GetQUOTE_CHAR() который вернёт нужный СИМВОЛ
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- ✯ Ветеран ✯
- Сообщения: 1704
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 9 раз
- Поблагодарили: 4 раза
Re: Замена кавычки(") на спецсимвол (")
У кого есть - поделитесь пожалуйста. Спасибо.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп