使用Node.JS查询MySQL并在网页中显示结果

时间:2014-03-26 09:51:52

标签: javascript php jquery mysql node.js

我的目标是使用Node.JS查询MySQL以获得更好的交互性。我的查询是一个简单的SELECT JOIN。我设法构建了一个在控制台中显示结果的脚本,但是当我在网页中显示它时,我有点卡住了。这是我的代码:

var mysql = require('mysql');

var mySqlClient = mysql.createConnection({
    host    : 'server',
    user    : 'login',
    password: 'pwd',
    database: 'db'
});

var selectQuery = 'SELECT fields FROM table t1\
                   INNER JOIN table t2\
                   ON t1.field = t2.field';
mySqlClient.query(
    selectQuery,
    function select(error, results, fields) {
        if(error) {
            console.log(error);
            mySqlClient.end();
            return;
        }

        if(results.length > 0) {
            console.log(results);
        } else {
            console.log('No data');
        }
        mySqlClient.end();
    });

将此功能纳入网页的最佳方法是什么?我是否需要使用Node.JS创建httpServer?

非常感谢您的帮助!

修改 我想在使用Zend Framework设计的PHP应用程序中使用Node.JS。 Node.JS应用程序不是我项目的唯一应用程序。

3 个答案:

答案 0 :(得分:2)

最简单的方法是使用节点框架。与express一样。

您将做类似

的事情
/*** omitting generic code for clarity ***/
app.get('/yourpage',function(req,res){

    //On request of this page initiating sql query. Assumes that the object initialization is done above.
    mySqlClient.query(
    selectQuery,
    function select(error, results, fields) {
        if(error) {
            console.log(error);
            mySqlClient.end();
            //render the template with error to be alerted
            res.render('tempaltefile',{data:null,error:error});                
        }

        if(results.length > 0) {
            //console.log(results);
            //render the template with fetched data
            res.render('tempaltefile',{data:results,error:null});
        } else {
            //console.log('No data');
            //render the template with empty data alert
            res.render('tempaltefile',{data:null,error:"no data"});
        }
        mySqlClient.end();
    });

});

回复评论

请提及您在旁边的ph代码中使用此功能。我认为你必须将节点代码生成api并在php端使用它。

答案 1 :(得分:0)

我遇到了和你一样的情况,自NodeJS以来我无法连接到MySQL Zend。我的解决方案是使用:

最后,重新启动计算机以应用新安装。

  • 在server.js文件中,您可以使用此代码连接到HostDB:

    var app = require(' http')。createServer(handler),mysql = require(' mysql'),connectionsArray = [],connection = mysql.createConnection({host :' localhost',用户:' USERNAME MYSQL',密码:' PASSWORD MYSQL',数据库:' NAME MYSQLDATABASE',端口:3306} );

答案 2 :(得分:0)

app.post('/qr', function(req, res) {
  console.log("Check QR code.");
  let now = moment().format('MMMM Do YYYY, h:mm:ss a');
  let subnow = now.substr(0, 8);
  let subnowwild = subnow + "%";
  connection.query("select exists (select * from visit where timeIn like ?)", subnowwild, function(err, result) {
  if (err) throw err;
  console.log(result);
    if(result = 0) {
     res.redirect(307, '/savedata');
    }
    else {
     res.redirect(307, '/updatedata');
    }
  });
});

因此,我想查看使用mysql获取数据时的响应,并且此网页显示了,但是没有显示我正在寻找的答案。

如果您想查询返回数据作为json响应,也可以使用res.send(result);