Можно ли последовательно использовать mysql_real_escape_string с небольшими фрагментами строки, а затем повторно собратьC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Можно ли последовательно использовать mysql_real_escape_string с небольшими фрагментами строки, а затем повторно собрать

Сообщение 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

Подробнее здесь: https://stackoverflow.com/questions/793 ... -chunks-of
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»