用Node.JS查询MySQL并在网页中显示结果
我的目标是用Node.JS查询MySQL以获得更好的交互性。 我的查询是一个简单的SELECT
和JOIN
。 我设法构build了一个在控制台中显示结果的脚本,但在网页中显示时,我仍然陷入困境。 这是我的代码:
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创build一个httpServer吗?
非常感谢您的帮助!
编辑我想在使用Zend Frameworkdevise的PHP应用程序内使用Node.JS。 Node.JS应用程序不会是我的项目的唯一的应用程序。
最简单的方法是使用节点框架。 像快递 。
你会做类似的事情
/*** 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端使用它。
我和你的情况一样,自从NodeJS以来,我无法连接到MySQL Zend。 我的解决scheme是使用:
-
Node-mysql插件(命令安装到nodejs中,
npm install mysql
:npm install mysql
) -
安装MySQL ODBC连接器( http://dev.mysql.com/downloads/connector/ )插件。
最后,重新启动计算机以应用新的安装。
-
在你的server.js文件中,你可以使用这段代码连接到你的HostDB:
var app = require('http')。createServer(handler),mysql = require('mysql'),connectionsArray = [],connection = mysql.createConnection({host:'localhost',user:'USERNAME MYSQL',password :'PASSWORD MYSQL',database:'NAME MYSQLDATABASE',port:3306});