node mysql insert语法_nodejs之MySQL插入数据--提示语法错误

npmmysql版本@2.18.1

创建链接

var mysql = require("mysql");

function createConnection() {

var connection = mysql.createConnection({

host: '127.0.0.1',

port: '3306',

user: 'root',

password: 'root',

database: 'my_blog' // 数据库名称

});

return connection;

}

复制代码

插入数据(使用占位符)

function insertEveryday(content, ctime, success) {

// var insertSql = "INSERT INTO every_day ('content','ctime') VALUES (?,?)";

// var params = [content, ctime];

var insertSql = 'INSERT INTO every_day SET ?';

var params = {

"content": content,

"ctime": ctime

};

// 连接数据库

var connection = createConnection();

connection.connect();

connection.query(insertSql, params, function (error, result) {

if (error == null) {

success(result)

} else {

console.log(error)

}

});

connection.end();

}

复制代码

遇到的bug

{ Error: ER_PARSE_ERROR: 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 ''content','ctime') values ('站在巨人的肩膀上',1584351668)' at line 1

at Query.Sequence._packetToError (D:\xhn\programs\deltaning.com\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)

at Query.ErrorPacket (D:\xhn\programs\deltaning.com\node_modules\mysql\lib\protocol\sequences\Query.js:79:18)

at Protocol._parsePacket (D:\xhn\programs\deltaning.com\node_modules\mysql\lib\protocol\Protocol.js:291:23)

at Parser._parsePacket (D:\xhn\programs\deltaning.com\node_modules\mysql\lib\protocol\Parser.js:433:10)

at Parser.write (D:\xhn\programs\deltaning.com\node_modules\mysql\lib\protocol\Parser.js:43:10)

at Protocol.write (D:\xhn\programs\deltaning.com\node_modules\mysql\lib\protocol\Protocol.js:38:16)

at Socket. (D:\xhn\programs\deltaning.com\node_modules\mysql\lib\Connection.js:88:28)

at Socket. (D:\xhn\programs\deltaning.com\node_modules\mysql\lib\Connection.js:526:10)

at Socket.emit (events.js:182:13)

at addChunk (_stream_readable.js:283:12)

--------------------

at Protocol._enqueue (D:\xhn\programs\deltaning.com\node_modules\mysql\lib\protocol\Protocol.js:144:48)

at Connection.query (D:\xhn\programs\deltaning.com\node_modules\mysql\lib\Connection.js:198:25)

at Object.insertEveryday (D:\xhn\programs\deltaning.com\dao\EverydayDao.js:16:16)

at IncomingMessage. (D:\xhn\programs\deltaning.com\web\EverydayController.js:11:21)

at IncomingMessage.emit (events.js:182:13)

at IncomingMessage.Readable.read (_stream_readable.js:486:10)

at flow (_stream_readable.js:922:34)

at resume_ (_stream_readable.js:904:3)

at process._tickCallback (internal/process/next_tick.js:63:19)

code: 'ER_PARSE_ERROR',

errno: 1064,

sqlMessage:

'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 \'\'content\',\'ctime\') values (\'站在巨人的肩膀上\',1584351668)\' at line 1',

sqlState: '42000',

index: 0,

sql:

'insert into every_day (\'content\',\'ctime\') values (\'站在巨人的肩膀上\',1584351668)' }

复制代码

看着上面问题一大串,其实就是提示我说语法错误,我在网上找了好久,插入语句的语法都是下面这个,别人写的也没问题

var insertSql = "INSERT INTO every_day ('content','ctime') VALUES (?,?)";

var params = [content, ctime];

connection.query(insertSql, params, function (error, result) {

……

});

复制代码

后来还是去mysql的npm网站上找到,新版本(mysql@2.18.1)的插入语法改了,

原来插入语法是"INSERT INTO 表名 (字段1, 字段2, ...) VALUES (?, ?, ...)"

新版语法使用的是"INSERT INTO 表名 SET ?",如下

var insertSql = 'INSERT INTO every_day SET ?';

var params = {

"content": content,

"ctime": ctime

};

connection.query(insertSql, params, function (error, result) {

……

});

复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值