Страница 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
 
			 
			
					
				Re: Замена кавычки(") на спецсимвол (")
				Добавлено: 14 Февраль 2013, 14:12
				 gopstop2007
				Admin писал(а):Подробнее можно?
Двойная кавычка вполне может присутствовать в названии товара и SQL скрипту не должна мешать.
Проблем с кавычками нет, надо чтобы на сервере (интернет магазин) строка на клиенте была: Апельсин "Turk",
 а записана на сервере в таком виде: Апельсин "e;Turk"e;. 
Проблема в том, что при запуске клиента загружается строка из сервера!
Идет  двухсторонний обмен изменений, можно поменять строку на сервере и она должна загрузится на клиента: Апельсин "Turk"
и наоборот, на клиенте изменяется строка и она загружается на сервер с таком виде: Апельсин "e;Turk"e;
Надо, чтобы на клиенте в процессе любого обращения к базе при выводе строки, поиске и т.п.  ("e;) заменялась на (")
Где сделать вставку в MAV чтобы можно было "обрабатывать" получаемые или отправляемые строки в нужном формате.
SELF.Db.GetQUOTE_CHAR()
Это что за зверь такой 

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

 
			 
			
					
				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
				 У кого есть - поделитесь пожалуйста. Спасибо.