![]() |
![]() |
![]() |
|
Экранирование символов строки | ☑ | ||
---|---|---|---|---|
0
Septera
21.12.10
✎
17:22
|
Делаю запрос в базу MySQL, в запросе создаются позиции номенклатуры, естественно пользователи в справочник Номенклатура наколотили названия как душе угодно и при добавлении некоторых записей возникают ошибки и соединение рвется. Вопрос, кроме перебора символов есть еще какие-то способы избавиться от ненужных символов в строке?
|
|||
1
Fragster
гуру
21.12.10
✎
17:24
|
в php есть функция mysqli.real_escape_string
|
|||
2
Septera
21.12.10
✎
17:24
|
(1) Речь об 1С вообще-то =)
|
|||
3
Fragster
гуру
21.12.10
✎
17:25
|
соответственно, если у тебя на сервере веб-сервис (иль свое АПИ какое другое) на php, который ты дергаешь, а не напрямую вставляешь, то можно заюзать ее
|
|||
4
Mitriy
21.12.10
✎
17:29
|
(2) "Делаю запрос в базу MySQL, в запросе создаются позиции номенклатуры"... каким боком тут 1С?
|
|||
5
Septera
21.12.10
✎
17:45
|
(3) промежуточный скрипт это не панацея, слишком громоздко выходит
(4) из 1С соединяюсь с MySQL, что тебе не понятно? |
|||
6
Fragster
гуру
21.12.10
✎
17:54
|
(5) 1с напрямую не работает с майэскуэль, соответственно, используется прокладка. может АДО, может ОДБЦ, а может и вебсервис специфический (кстати, вебсервисы позволяют реалтаймовое двустороннее взаимодействие строить)
|
|||
7
Septera
21.12.10
✎
17:58
|
(6) что ты говоришь!!1!111!!! нет слов одни эмоции =)
Для справки, соединяюсь через драйвер ODBC MySQL. |
|||
8
Живой Ископаемый
21.12.10
✎
18:03
|
а стало быть чтобы выполнить mysqli.real_escape_string уже черепушки не хватает... понятно
|
|||
9
Живой Ископаемый
21.12.10
✎
18:03
|
через тот же ОДБЦ
|
|||
10
simol
21.12.10
✎
18:07
|
Заменить
|
|||
11
Fragster
гуру
21.12.10
✎
18:12
|
(10)
ага, первый запрос: delimiter $$ второй запрос: select * from table $$ drop table и все. твое "заменить" идет лесом. а (1) обходит такую проблему |
|||
12
simol
21.12.10
✎
18:33
|
(11)
см (0) |
|||
13
Живой Ископаемый
21.12.10
✎
18:39
|
2(12) в предложенном тобой случае разве не будет перебора символов? просто перебираться будут не символы наименования а... анти-эталонные символы.
|
|||
14
Septera
22.12.10
✎
10:50
|
mysqli - это класс php, зачем он мне нужен, если с таким же успехом я могу сделать перебор в 1С или я чего-то не понимаю?
|
|||
15
Живой Ископаемый
22.12.10
✎
10:52
|
а функция real_escape_string ее что - тоже нужно вызывать для каждого символа в строке? я просто не в курсе...
=== короче, со строками лучше всего работает регексп это и так понятно и всем известно.. вот и вызывай его на стороне 1С. |
|||
16
Septera
22.12.10
✎
11:33
|
real_escape_string вызывается для каждой строки запроса, но факт что работает этот класс только в php, а смысл мне внедрять третье звено в обмен между 1с и php когда есть банальный перебор
|
|||
17
Живой Ископаемый
22.12.10
✎
11:44
|
не внедряй.
|
|||
18
Fragster
гуру
22.12.10
✎
11:47
|
(15) не, типа так:
$query = "select * from table where title = ".mysqli->real_escape_string($title); |
|||
19
Fragster
гуру
22.12.10
✎
11:48
|
автор, почитай про prepared statements - походу то, что нужно, и прямо запросами можно юзать, без обвязки на php. только кавычки все равно экранировать надо будет
|
|||
20
Septera
22.12.10
✎
11:53
|
(19) ок, как решу вопрос отпишу
|
|||
21
Septera
22.12.10
✎
12:17
|
Решил вопрос банальным перебором:
Процедура ОбработкаСтроки(Наименование) На выходе красивая строка, минимальная нагрузка на производительность. |
|||
22
Fragster
гуру
22.12.10
✎
12:33
|
(21) реальная лажа
|
|||
23
Septera
22.12.10
✎
12:43
|
(22) обоснуй =)
|
|||
24
vS
22.12.10
✎
12:53
|
ты же нехотел перебором? :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |