В настоящее время я выделяю обычный буфер 2N + 1 при использовании mysql_real_escape_string, но мне было интересно, могу ли я разделить исходную строку на несколько фрагментов и использовать небольшой буфер в стеке для их обработки. меньшие шаги (которые затем будут добавлены к фактической строке запроса).
Я придумал это урезанное (непроверенное), но затем заглянул в исходный код соединителя mariadb для mysql_real_escape_string и кажется, что многобайтовые символы используют какую-то специальную обработку, и теперь я не уверен, что это правильно.
struct MySQLFmtBlob {
MYSQL *mysql;
const void *data;
usize size;
};
template
struct fmt::formatter {
constexpr auto parse(format_parse_context &ctx) {
auto it = ctx.begin(), end = ctx.end();
if(it != end && *it != '}')
throw format_error("invalid format");
return it;
}
auto format(const MySQLFmtBlob &blob, fmt::format_context &ctx) const {
auto iter = ctx.out();
MYSQL *mysql = blob.mysql; ASSERT(mysql);
const char *ptr = (const char*)blob.data;
usize remainder = blob.size;
while(remainder > 0){
constexpr unsigned long N = KB(1);
char out[N * 2 + 1];
unsigned long inLen = (N
Подробнее здесь: https://stackoverflow.com/questions/793 ... -chunks-of
Можно ли последовательно использовать mysql_real_escape_string с небольшими фрагментами строки, а затем повторно собрать ⇐ C++
Программы на C++. Форум разработчиков
1735537580
Anonymous
В настоящее время я выделяю обычный буфер 2N + 1 при использовании mysql_real_escape_string, но мне было интересно, могу ли я разделить исходную строку на несколько фрагментов и использовать небольшой буфер в стеке для их обработки. меньшие шаги (которые затем будут добавлены к фактической строке запроса).
Я придумал это урезанное (непроверенное), но затем заглянул в исходный код соединителя mariadb для mysql_real_escape_string и кажется, что многобайтовые символы используют какую-то специальную обработку, и теперь я не уверен, что это правильно.
struct MySQLFmtBlob {
MYSQL *mysql;
const void *data;
usize size;
};
template
struct fmt::formatter {
constexpr auto parse(format_parse_context &ctx) {
auto it = ctx.begin(), end = ctx.end();
if(it != end && *it != '}')
throw format_error("invalid format");
return it;
}
auto format(const MySQLFmtBlob &blob, fmt::format_context &ctx) const {
auto iter = ctx.out();
MYSQL *mysql = blob.mysql; ASSERT(mysql);
const char *ptr = (const char*)blob.data;
usize remainder = blob.size;
while(remainder > 0){
constexpr unsigned long N = KB(1);
char out[N * 2 + 1];
unsigned long inLen = (N
Подробнее здесь: [url]https://stackoverflow.com/questions/79316897/is-it-possible-sequentially-use-mysql-real-escape-string-with-small-chunks-of[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия