var convID = 2525;
var contactUsername = 'blabla';
var userId = 100;
var contactId = 200;
var sql = "INSERT INTO contacts (FK_OWNERID, FK_USERID, FC_CONTACTNAME, `CONVERSATION_ID`)
VALUES (" + mysql.escape(userId) + "," + mysql.escape(contactId) + "," + mysql.escape(contactUsername) + "," + convID + "),
(" + mysql.escape(contactId) + "," + mysql.escape(userId) + "," + mysql.escape(username) + "," + convID + ")";
`错误:ER_BAD_FIELD_ERROR:'字段列表'中的未知列'2525' 对于CONVERSATION_ID和FC_CONTACTNAME,字段为varchar(32),对于另外两个字段,字段为int。
此查询有什么问题?我甚至将反引号放在CONVERSATION_ID
附近,它认为convID
变量是一列......
编辑:
如果我的查询就是这样,那么它可以工作:
var sql = "INSERT INTO contacts (`FK_OWNERID`, `FK_USERID`, `FC_CONTACTNAME`)
VALUES (" + mysql.escape(userId) + "," + mysql.escape(contactId) + "," + mysql.escape(contactUsername) + "),
(" + mysql.escape(contactId) + "," + mysql.escape(userId) + "," + mysql.escape(username) + ")";
答案 0 :(得分:20)
制作
" + convID + "
到
'" + convID + "'
很可能是一个字符串,数据类型是varchar所以你需要在单引号中包含。
答案 1 :(得分:1)
我最近在尝试将参数传递给Node JS中的字符串时遇到了类似的问题。
最后,通过使用以下行,我能够动态插入MySQL数据库:
insertIntoNodeDirectory('2','“'+ testMacAddress [0] +''','1');
这将输入整数值2,索引0处的testMacAddress数组中包含的字符串值,以及整数值1。
如果我使用这一行: insertIntoNodeDirectory('2','“+ testMacAddress [0] +”','1');
没有testMacAddress附加的单引号,插入数据库的值是字符串'testMacAddress [0]'。不是我想要的。
答案 2 :(得分:0)
我自己也有类似的问题,我也没有正确指定所有列名。这是最终有效的代码。
var queryString = "INSERT INTO " + table + " (columnText, columnBool) VALUES ('" + val + "', FALSE);"
答案 3 :(得分:0)
var _name = req.body.name
var _age = req.body.age
var _table = 'people'
const _query = "INSERT INTO " + _table + " (name, age) VALUES ('" + _name + "', '" + _age + "' );"
这对我来说是工作,主要问题发生在查询中。