Я придумал это урезанное (непроверенное), но затем заглянул в исходный код соединителя 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]
Мобильная версия