我是第一次使用node-mysql,我有一个没有错误,没有警告但没有正常工作的程序......这是该程序的代码,非常简单:
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database: 'nodetest',
port: 8080
});
connection.connect();
var usr = "BLASHDASD"
var userId = usr;
var sql = 'UPDATE userlist SET user1= ' + connection.escape(userId) + ' WHERE id=1 ';
console.log(sql);
connection.query('sql', function(err, rows, fields) {
console.log(err);
console.log("BLAHSDBKASD");
});
connection.end();
这是控制台输出:
C:\wamp\www\nodePHP-master\js>node nodeTest.js
UPDATE userlist SET user1= 'BLASHDASD' WHERE id=1
但我的MySQL表中没有发生任何事情......我甚至复制并粘贴了上面的UPDATE行,并将其作为SQL代码运行,并且工作得很好......需要一些关于发生了什么的想法。非常感谢
修改
回答了我自己的问题......正在侦听错误的端口,因此连接失败了。以下是未来感兴趣/搜索的更新代码:
//TEST
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database: 'nodetest',
port: 3306,
});
connection.connect(function(err){
if(err) {
console.log(err)
} else {
console.log("connected");
}
});
var usr = "BLASHDASD"
var userId = usr;
var sql = 'UPDATE userlist SET user1= ' + connection.escape(userId) + ' WHERE id=1 ';
console.log(sql);
connection.query(sql, function(err, rows, fields) {
console.log(err);
});
connection.end();
答案 0 :(得分:-1)
您遇到节点的异步性问题,这是进入Node时非常常见的问题。你的代码中也有一个很小但很重要的错误(你有'sql'
作为带引号的字符串),但这里有一些结构相似的东西应该指向正确的方向。
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'locahost',
user : 'foo',
password : 'bar',
database : 'test'
});
// the callback inside connect is called when the connection is good
connection.connect(function(err){
var sql = "select 'Joe' as name from dual";
connection.query(sql, function(err, rows, fields) {
if (err) return console.log(err);
// you need to end your connection inside here.
connection.end();
console.log(rows[0].name);
});
});
您可能会开始想知道避免所有这些回调的方法。您可能希望查看我对this question的答案,了解更多扩展的mysql示例以及提供替代回调狂热的替代实现。