Tag: node mysql

如何在MySQL中用不同的参数更新查询

环境 Node.js,MySQL(使用node-mysql library连接) 首先 我可以有one argument 'aaa'或two arguments 'aaa' and 'bbb' 。 UPDATE user SET email = 'aaa' WHERE uid = 'xxx'; UPDATE user SET email = 'aaa', password = 'bbb' WHERE uid = 'xxx'; 我的问题 我怎么能用一个查询来克服上述情况? 像下面… var sql = "UPDATE user SET email = ?, password = ? WHERE uid = ?;" dbclient.query(sql, […]

如何使用node.js在mySQL中插入多个logging

我有一个查找表: CREATE TABLE technologies ( technologyName VARCHAR(50) NOT NULL PRIMARY KEY ); 我想为这个数组中的每个元素存储一个新的logging: var values = ['Grunt', 'Gulp']; 所以,结果表如下所示: +—————-+ | technologyName | +—————-+ | Grunt | +—————-+ | Gulp | +—————-+ 我怎样才能做到这一点使用节点? 更新: 我知道我可以做这样的事情: var values = [ [ ['Grunt'], ['Something'] ] ] connection.query('INSERT IGNORE INTO technologies (technologyName) VALUES ?', values); 我试过这与原始数组,但它不起作用。 我怎样才能将简单的数组转换成更复杂的数组?

在where子句中使用node-mysql中的数组

我想做一个查询,看起来像这样: "Select * FROM … WHERE name in ?" which would be equal to "Select * FROM … WHERE name in 'joe','william', …" 会有办法做这样的事吗? Model.query(query, array, function(err, result) {…}); 我尝试了以下内容: string = array.join("','") Model.query(query, string, function(err, result) {…}); 但是,这里是我的结果(由于单引号,反斜杠出现): Select * FROM … WHERE name in \'joe\',\'william\',…"

Node.js / Express.js:DB查询的工厂devise模式

我是Node.js / Express.js的新手,试图build立一个基本的网站。 我用node-mysql处理我的数据库查询,但现在我正在做一些令人愉快的代码,例如: router.get('/', function(req, res, next) { var query = 'INSERT INTO users(token) VALUES (?)'; connection.query(query, [req.query.token], function(err, rows, fields) { if (err) throw err; res.cookie('token', req.query.token); }); 我有10个不同的路线,其中每个查询都是硬编码的。 我想能够build立数据库工厂,所以我的代码如下所示: router.get('/', function(req, res, next) { var success = userFactory.InsertToken(req.query.token); if (success) //maybe a callback instead res.cookie('token', req.query.token); }); 这样做的最佳做法是什么?

什么是防止node-mysql中的SQL注入的最佳实践?

关于这个主题已经有了一些讨论(例如, 在Node.js中阻止SQL注入 ),但是没有明确的清晰度或深入的讨论,更不用说在任何地方都有很好的文档了。 node-mysql文档讨论防止SQL注入和一些转义函数。 但是,目前还不清楚这些函数如何防止SQL注入。 手册说“string安全地逃脱了”。 没有更多…是仅限于逃脱一些字符? 在node-mysql中似乎还有其他一些与connection.escape和pool.escape中的函数相同的函数,并且再次强调了这些函数用于防止SQL注入。 在node-mysql中似乎也不支持真正的准备语句。 这个计划和文件再次不清楚。 Node-mysql显然是node.js环境中非常受欢迎的模块,至less在我有限的经验中是相当稳定的。 什么是防止在node-mysql中进行SQL注入的最佳实践?

在MySQL上使用Promise进行并行插入查询失败

我写了一个在Node.js中并行运行插入查询的代码,我也使用Promise.js。 但代码失败并引发“重复主键”条目的例外。 代码如下, var Promise = require("promise"); var mySql = require("mysql"); var _ = require("underscore"); var connection = mySql.createConnection({ host : "localhost", user : "root", password : "rahul", database : "testDb" //schema }); connection.connect(); function insertDept(name){ return new Promise(fn); function fn(resolve,reject){ getMaxDept().then(function(rows){ var deptId = rows[0]["DeptId"]; deptId = (_.isNull(deptId) === true) ? 125 : deptId; […]

在这个node.js函数中运行多个MySQL查询

我有这个node.js函数,它执行单个MySQL查询后返回一个Promise。 function deletePoint(PointObj, door_id) { return new Promise(function(resolve, reject) { try { var connection = jonMySQL.getMySQL_connection(); var mysql_query = '`DELETE FROM table1 WHERE user_id=? and door_id=?`'; var mysql_query_placeholder_arr = [PointObj.user_id, door_id]; connection.query(mysql_query, mysql_query_placeholder_arr, function(err, rows, fields) { if (err) { return reject(err); } else { resolve(rows); } }); } catch (err) { reject(err); } }); […]

将node.js-mysql结果返回给一个函数

我有两个node.js文件:server.js和database.js。 我想我的socket.io发射发生在server.js和database.js中的数据库查询。 Server.js: // init io.sockets.on('connection', function(socket) { initdb = db.initdb(); console.log(initdb) }); 我的database.js基本上包含以下代码: function query(queryString) { connection = mysql.createConnection({ host: '12.23.45.67', user: 'user', password: 'password', database: 'database' }); connection.connect(); var res = connection.query(queryString, function(err, rows, fields) { if (err) throw err; }); connection.end(); } // export initdb for external usage by server.js exports.initdb = […]

Node-MySQL – Query()方法中的转义与Mysql.Escape()/ Mysql.EscapeId()

我目前正在使用node-mysql库将我的应用程序连接到一个MySQL实例。 在阅读了我发现的其他一些StackOverflow问题和文章之后,听起来就像每次调用query()方法时,node-mysql都会自动转义不安全的字符。 但是在一些代码片段中,我还看到在query()方法中调用了mysql.escape()和mysql.escapeId() 。 这似乎是,虽然query()自动转义一些危险的字符,你仍然应该调用mysql.escape()和mysql.escapeId()转义其他危险字符。 它是否正确? 如果是这样,什么样的SQL注入攻击被query()方法自动保护,通过调用mysql.escape()和mysql.escapeId()来保护什么样的SQL注入攻击?

NodeJS MySQL:测量查询执行时间

我在一个共享的主机平台,并希望限制在我的应用程序的查询,以便如果总的执行时间超过一定的数量在一个可变的时间段,那么我可以让应用冷静,然后恢复。 要做到这一点,我想知道我的每个查询需要多长时间,并在应用程序内进行pipe理,而不是通过外部分析。 我已经看到了在PHP查询前后logging时间( 甚至phpMyAdmin这样做 )的例子 ,但是这不会在NodeJS或asynchronous运行查询的任何东西。 所以问题是:我将如何去得到在NodeJS查询的实际执行时间? 为了参考,我使用这个模块来查询MySQL数据库: https : //github.com/felixge/node-mysql/