Существует множество проблем с построением исходной строки, я не уверен, что код, включенный в вопрос, точно такой же, как и в вашей программе.
Эта программа:
#include <iostream>
int main()
{
std::string var1 = "var1",
var2 = "var2",
var3 = "var3",
var4 = "var4",
var5 = "var5",
var6 = "var6",
var7 = "var7",
var8 = "var8",
var9 = "var9",
var10 = "var10",
var11 = "var11",
var12 = "var12",
var13 = "var13",
var14 = "var14",
var15 = "var15",
var16 = "var16",
var17 = "var17",
var18 = "var18";
std::string add_query = "INSERT INTO `table`(\
`row1`, `row2`, `row3`, `row4`, `row5`, `row6`, `row7`, `row8`, `row9`,\
`row10`, `row11`, `row12`, `row13`, `row14`, `row15`, `row16`, `row17`,\
`row18`, `row19`, `row20`, `row21`, `row22`)\
VALUES ( NULL, '" + var1 + "', '" + var2 + "', '" + var3 + "', '" + var4 + "', '" +
var5 + "', '" + var6 + "', '" + var7 + "', 0, NULL, NULL, '" + var8 + "', '" +
var9 + "', '" + var10 + "', '" + var11 + "', '" + var12 + "', '" + var13 +
"', '" + var14 + "', '" + var15 + "', '" + var16 + "','" + var17 + "', '" +
var18 + "');";
std::cout << add_query << '\n';
return 0;
}
Создает этот вывод:
INSERT INTO `table`( `row1`, `row2`, `row3`, `row4`, `row5`, `row6`, `row7`, `row8`, `row9`, `row10`, `row11`, `row12`, `row13`, `row14`, `row15`, `row16`, `row17`, `row18`, `row19`, `row20`, `row21`, `row22`) VALUES ( NULL, 'var1', 'var2', 'var3', 'var4', 'var5', 'var6', 'var7', 0, NULL, NULL, 'var8', 'var9', 'var10', 'var11', 'var12', 'var13', 'var14', 'var15', 'var16','var17', 'var18');
, который выглядит как правильно сформированный SQL, хотя некоторые API не требуют конечной точки с запятой.