我在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)
})
答案 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