使用node-mysql的动态变量' WHERE'声明?

时间:2015-11-30 19:00:42

标签: javascript sql node.js variables node-mysql

我在node.js服务器中使用node-mysql。

问题是,我试图将一个javascript变量传递到我的WHERE sql语句中,而且它没有把它拿起来(原因很明显)。 我查看了node-mysql文档,包括SET方法,但是由于变量需要来自javascript代码,因为我希望它由用户动态输入,因此无法工作。

有什么想法吗?代码如下..

api.js

         var mysql = require('mysql');

            var connection = mysql.createConnection({
                host: 'my server',
                user: 'username',
                password: 'password',
                database: 'fruits'
            });
            connection.connect()

      var blueberriesWeight = "100"

            connection.query('SELECT fruit_price FROM fruit WHERE fruit_weight = blueberriesWeight', 
              function(err, result){ 
            console.log(result)
            console.error(err)
            })

2 个答案:

答案 0 :(得分:0)

根据the docs,有几种方法:

var weight = 100;

connection.query(
  'SELECT fruit_price FROM fruit WHERE fruit_weight=' + connection.escape(weight),
  function(...

connection.query(
  'SELECT fruit_price FROM fruit WHERE fruit_weight=?', [weight],
  function(...

虽然有一个警告,查询字符串中的所有?都将被替换。

答案 1 :(得分:0)

使用knex。链接:http://knexjs.org/

var knex = require('knex')({
  client: 'mysql',
  connection: {
    host     : 'my server',
    user     : 'your_database_user',
    password : 'your_database_password',
    database : 'fruits'
  }
});

var blueberriesWeight = 100;
knex('fruit')
  .select('fruit_price')
  .where({
    fruit_weight: blueberriesWeight
  })
  .asCallback(function(err, rows) {
    //do stuff with the result
  });

这个库让编写javascript SQL查询语句变得轻松有趣。您可以使用回调或Promises,并且维护得很好。

如果您对完整的ORM感兴趣,请查看knex的大哥,Bookshelf