MySQL запрос больше не работает, возможно, неправильный синтаксис - PullRequest
0 голосов
/ 01 июня 2019

У меня проблема с синтаксисом MySQL. Я имею в виду, что используемый мной запрос прекрасно работал до рефакторинга функции, программа компилируется успешно ... просто запрос не работает.

Я пытался играть с кавычками и апострофами, но это все равно не работает. Это мой запрос:

string add_query = "INSERT INTO `table`(
    `col1`, `col2`, `col3`, `col4`, `col5`, `col6`, `col7`, `col8`, `col9`,
    `col10`, `col11`, `col12`, `col13`, `col14`, `col15`, `col16`, `col17`, 
    `col18`, `col19`, `col20`, `col21`, `col22`) 
    VALUES (
    NULL, '" + var1 + "', '" + var2 + "', '" + var3 + "', '" + var4 + "', '" + 
    var5 + "', '" + var6 + "', '" + var7 + "', 0, NULL, NULL, '" + var8 + "', '" +
    var9 + "', '" + var10 + "', '" + var11 + "', '" + var12 + "', '" + var13 + 
    "', '" + var14 + "', '" + var15 + "', '" + var16 + "','" + var17 + "', '" +
    var18 + "');";

У меня есть только эта ошибка:

Error: 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1

Понятия не имею, как это исправить.

Любая помощь или любая идея приветствуется. Извините за плохой английский, это мой второй язык.

// EDIT Это мой cout, который отлично работает в MySQL Workbench, но не через мою программу:

INSERT INTO `table`(`col1`, `col2`, `col3`, `col4`, `col5`, 
                    `col6`, `col7`, `col8`,  `col9`, `col10`, 
                    `col11`, `col12`, `col13`, `col14`, `col15`, 
                    `col16`, `col17`, `col18`, `col19`, `col20`,  
                    `col21`, `col22`) 
VALUES (NULL, 'var1', 'var2', 'var3', 'var4', 'var5', '', 
       'var6', 0, NULL, NULL,  'var7', 'var8', 'var9', ' ', 
       'var10', 'var11',    'var12', 'var13', 'var14', 'var15', 'var16');

1 Ответ

0 голосов
/ 01 июня 2019

Существует множество проблем с построением исходной строки, я не уверен, что код, включенный в вопрос, точно такой же, как и в вашей программе.

Эта программа:

#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 не требуют конечной точки с запятой.

...