MySQL插入错误:ER_BAD_FIELD_ERROR:'字段列表'中的未知列'2525'

时间:2014-04-11 19:12:18

标签: mysql sql

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) + ")";

4 个答案:

答案 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 + "' );"

这对我来说是工作,主要问题发生在查询中。