2017-08-27 97 views
-2

我目前正在尝试获取当前日期,并尝试保存在我的数据库,但唯一的东西我在我的日期列是1982年,真的很奇怪?这里是我的日期和MySQL插入代码:插入日期到mysql与节点

日期:

var dateTime = require('node-datetime') 
var dt = dateTime.create(); 
var formatted = dt.format('Y-m-d'); 
console.log(formatted); 

Mysql的插入:

pool.query(
    'INSERT INTO jbets SET user = ' + pool.escape(tradingRequests[offer.id]['user']) + 
    ', assetids = ' + pool.escape(assetidsSS) + 
    ', value = ' + pool.escape(totalPrice) + 
    ', minTicket = ' + pool.escape(minTicket) + 
    ', maxTicket = ' + pool.escape(maxTicket) + 
    ', total = ' + pool.escape(totalSkins) + 
    ', jid = ' + pool.escape(jackpotRound) + 
    ', token = ' + pool.escape(offer.id) + 
    ',date =' + formatted 
) 
+0

我对Node的MySQL接口不太熟悉,但我认为你没有使用准备好的语句。考虑使用它们来避免这种可能的错误。 –

回答

2
  1. 你确实应该使用占位符。
  2. 在插入数据库中的日期字段之前,您不应该试图将日期对象转换为该字符串格式。正确的格式将是YYYY-mm-dd HH:ii:ss,但是您可以让MySQL库为您处理转换。

我建议阅读MySQL JS库文档的Escaping Query Values部分。

尝试是这样的:

pool.query('INSERT INTO jbets SET user = ?, assetids = ?, value = ?, ' + 
      'minTicket = ?, maxTicket = ?, total = ?, jid = ?, token = ?, date = ?', 
      [tradingRequests[offer.id]['user'], assetidsSS, totalPrice, 
      minTicket, maxTicket, totalSkins, jackpotRound, offer.id, dt]); 
0

使用此代码:

pool.query('INSERT INTO jbets (user, assetids, value, minTicket, maxTicket, total, jid, token, date) VALUES(pool.escape(tradingRequests[offer.id]['user']), pool.escape(assetidsSS), pool.escape(totalPrice), pool.escape(minTicket), pool.escape(maxTicket), pool.escape(totalSkins), pool.escape(jackpotRound), pool.escape(offer.id), NOW()));

+1

即使代码有效,随附的解释总是很棒。 – jhpratt

0

感谢您回应这个问题是从我的分贝我是需要改变TY为varchar