【发布时间】:2019-10-17 19:10:40
【问题描述】:
我的 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
我不知道如何解决它。
欢迎所有帮助或任何想法。 抱歉英语不好,这是我的第二语言。
//编辑 这是我的 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');
【问题讨论】:
-
您可能没有保护 SQL 注入。您需要转义字符串值或使用准备好的语句(如果它们在 C++ 中可用)
-
查看
add_query变量(使用您的调试器或简单地使用cout << add_query;)。某处可能有额外的报价。 -
为什么用
c++和mysqli(即php)标记你的问题?mysqli真的与您的问题相关吗? -
您能打印出
add_query以便我们更轻松地准确查看其中包含的内容吗? -
所以列并没有真正枚举?您只是针对问题更改了它们?
标签: c++ mysql syntax-error