Страница 1 из 1

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

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

Clarion 6.3 ABC (MAV ODBC ver 1.00 коммерческая)

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

Добавлено: 14 Февраль 2013, 7:03
Admin
Подробнее можно?
Двойная кавычка вполне может присутствовать в названии товара и SQL скрипту не должна мешать.

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

Добавлено: 14 Февраль 2013, 11:37
Andrew™
кавычки и запятычки могут присутствовать в строковых полях, на формат 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()

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

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

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

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

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

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

Добавлено: 14 Февраль 2013, 14:59
Admin
Если у вас есть Web программер то он что то ламерит... Если это вы то читайте... разберетесь.

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

Добавлено: 14 Февраль 2013, 15:28
gopstop2007
ну уж лучше mysqli_real_escape_string, чем htmlspecialchars баловаться... + мы используем готовый движок которые требует " и переписывать весь движок нет смысла, с учетом того что данная программа должна работать со всеми похожими сайтами без телодвижений на самих сайтах... php движок в базу пишет правильно как надо... прикладная программа на прямую общается с базой, и я никак не могу повлиять на те данные которые она вливает в мускуль...

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

Добавлено: 14 Февраль 2013, 16:02
Admin
gopstop2007 писал(а):ну уж лучше mysqli_real_escape_string
Лишь бы вам было хорошо :)

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

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

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

Добавлено: 16 Февраль 2013, 20:30
gopstop2007
для работы с БД используем курсорные объекты 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 не работает. Я так понимаю, с помощью хуков тоже можно решить проблему?

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

Добавлено: 18 Февраль 2013, 16:15
gopstop2007
У кого есть - поделитесь пожалуйста. Спасибо.