Задавайте вопросы, мы ответим
Вы не зашли.
При в ставке строк содержащих "\" сымволя щитаются как спец, даже если поле блоб. Как это отключить?
Неактивен
Если Вы работаете из PHP, то можете использовать функцию mysqli_prepare, которая сама вставит содержимое в запрос
Если на уровне SQL, то и символы кавычки расцениваются как закрытие кавычки. Если запрос
$sql = "INSERT INTO ta (xx, yy) VALUES('$xx', '$yy');"
то в переменных $xx и $yy надо сделать замену \ => \\, ' => \', "=>\"
Это можно сделать функцией addslashes()
$xx = addslashes($xx)
Неактивен
C++ Builder, а в самом SQL такую функцию не нашел. Т.е. нада самому вставлять?
Или мы не поняли друг-друга.
Я из программы встявляю rtf в таблицу после чего в ней появляются rtf теги с вырезаными "\". как с этим боротся?
Неактивен
Если Вы передаете SQL-запрос, в котором вставлен rtf как текст, то Вы вставляете фактически бинарный файл внутрь текстового запроса. Естественно, Вам нужно, чтобы внутри rtf не было кавычек, поэтому их заменить надо на \ + кавычка. Слеш становится здесь спецсимволом. Сам слеш должен представляться как \\
Какой Вы библиотекой пользуетесь для отправки SQL-запроса?
Неактивен
Спасибо, я понял. У меня обертка для dll. Там точна нет аналогов addslashes(). Все что видел остальное для работы с MySQL для Buildera невероятно агромнайе. Такшо придетса делать ручками.
PS Если знаете посоветуйте компактные либы.
Неактивен
В принципе нужна реализация str_replace(), а затем
str_replace(s, "\"", "\\\"");
str_replace(s, "'", "\\'");
str_replace(s, "\", "\\");
Если погуглить на str_replace C то там есть несколько реализаций данной функции. Трабл в том, что размер строки увеличивается, поэтому надо предпринимать определенные действия по выделению (и потом освобождению памяти).
Используя CBuilder, можно обойти проблему (правда за счет некой потери скорости, если она здесь важна):
char *s;
...
в s загружается файл
далее:
AnsiString S = AnsiString(s);
S = StringReplace(S, "\"", "\\\"", TReplaceFlags() << rfReplaceAll);
... еще два преобразования
s = S.c_str();
Неактивен
Вообще в родном MySQL C API есть функция mysql-escape-string
Неактивен
Ага. Спасиба. Буду капать.
Неактивен