2017-10-18 57 views
1

我是新手。我无法从前端插入数据到MySQL数据库。我在插入时遇到问题。我无法找到与mysql代码的错误

我index.js代码

我存放在变量形式的细节,试图将其插入到数据库

router.post('/signup',function(req,res,next) { 
    var item = req.body; 
    connection.connect(function(err){ 
     var sql = "INSERT INTO details VALUES ? "; 
     connection.query(sql,[item]); 
    }); 
    res.render('data' ,{items:item}); 
}); 

错误消息

/home/gayathri/jsonhbs/node_modules/mysql/lib/protocol/Parser.js:80 
     throw err; // Rethrow non-MySQL errors 
     ^

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 '`name` = 'Gayathri', `pwd` = 'def'' at line 1 
    at Query.Sequence._packetToError (/home/gayathri/jsonhbs/node_modules/mysql/lib/protocol/sequences/Sequence.js:52:14) 
    at Query.ErrorPacket (/home/gayathri/jsonhbs/node_modules/mysql/lib/protocol/sequences/Query.js:77:18) 
    at Protocol._parsePacket (/home/gayathri/jsonhbs/node_modules/mysql/lib/protocol/Protocol.js:279:23) 
    at Parser.write (/home/gayathri/jsonhbs/node_modules/mysql/lib/protocol/Parser.js:76:12) 
    at Protocol.write (/home/gayathri/jsonhbs/node_modules/mysql/lib/protocol/Protocol.js:39:16) 
    at Socket.<anonymous> (/home/gayathri/jsonhbs/node_modules/mysql/lib/Connection.js:103:28) 
    at emitOne (events.js:96:13) 
    at Socket.emit (events.js:188:7) 
    at readableAddChunk (_stream_readable.js:176:18) 
    at Socket.Readable.push (_stream_readable.js:134:10) 
    -------------------- 
    at Protocol._enqueue (/home/gayathri/jsonhbs/node_modules/mysql/lib/protocol/Protocol.js:145:48) 
    at Connection.query (/home/gayathri/jsonhbs/node_modules/mysql/lib/Connection.js:208:25) 
    at Handshake._callback (/home/gayathri/jsonhbs/routes/index.js:46:14) 
    at Handshake.Sequence.end (/home/gayathri/jsonhbs/node_modules/mysql/lib/protocol/sequences/Sequence.js:88:24) 
    at /home/gayathri/jsonhbs/node_modules/mysql/lib/protocol/Protocol.js:225:14 
    at _combinedTickCallback (internal/process/next_tick.js:73:7) 
    at process._tickCallback (internal/process/next_tick.js:104:9) 
npm ERR! code ELIFECYCLE 
npm ERR! errno 1 
npm ERR! [email protected] start: `node ./bin/www` 
npm ERR! Exit status 1 
npm ERR! 
npm ERR! Failed at the [email protected] start script. 
npm ERR! This is probably not a problem with npm. There is likely additional logging output above. 

npm ERR! A complete log of this run can be found in: 
npm ERR!  /home/gayathri/.npm/_logs/2017-10-18T03_54_05_403Z-debug.log 
+0

什么_exactly_是'req.body'的内容? “SHOW CREATE TABLE details”的MySQL输出是什么? – hunteke

回答

2

这不是有效的SQL语法。您不能使用一堆这样的值的占位符,则必须分别突破出来:

connection.query(
    "INSERT INTO details (name, pwd) VALUES (?,?)", 
    [ "Name", "Pwd" ] 
); 

一次性将所有这些条件作为一个占位符有将它们封装一个字符串,它打破了内部的影响句法。

重要信息:始终对您的密码进行哈希处理,切勿使用纯文本进行存储。在绝对至少use Bcrypt这是专门用于密码,而不是一些像SHA1一样的高速散列或像MD5一样的受损散列。

如果您使用的是节点,您可能希望至少考虑使用Passport,它可以为您做很多繁重的工作,并且可以与其他Node组件搭配使用。

相关问题