从零学习node.js之mysql数据库的操作(五)(3)

var params = ['test', 'test']; var query = connection.query('SELECT * FROM `user` WHERE `username`=? AND `password`=?', params, function(err, result){ console.log(result); }); console.log(query.sql); // SELECT * FROM `user` WHERE `username`='test' AND `password`='test'

同时,如果执行添加或更新操作时,还可以这样写:

var params = {username:'qwerty', password:'qwerty', email:'qwerty@qq.com'}; var query = connection.query('INSERT INTO `user` SET ?', params, function(err, result){ if(err) throw err; console.log(result); }); console.log(query.sql); // INSERT INTO `user` SET `username` = 'qwerty', `password` = 'qwerty', `email` = 'qwerty@qq.com'

数据库中的表明和字段名,可以使用??作为占位符,在拼接完成后会自动添加上``:

var params = ['user', 'username', 'test', 'password', 'test']; var query = connection.query('SELECT * FROM ?? WHERE ??=? AND ??=?', params, function(err, result){ console.log(result); }) console.log(query.sql); // SELECT * FROM `user` WHERE `username`='test' AND `password`='test'

4.3 使用MYSQL.FORMAT()转义参数

不多说,样例如下:

var userId = 1; var sql = "SELECT * FROM ?? WHERE ?? = ?"; var inserts = ['user', 'uid', userId]; sql = mysql.format(sql, inserts); // SELECT * FROM `user` WHERE `uid` = 1

五、多语句查询

出于安全考虑node-mysql默认禁止多语句查询(可以防止SQL注入),启用多语句查询可以将multipleStatements选项设置为true:

var connection = mysql.createConnection({multipleStatements: true});

启用后可以在一个query查询中执行多条语句:

connection.query('SELECT 1; SELECT 2', function(err, results) { if (err) throw err; // `results`是一个包含多个语句查询结果的数组 console.log(results[0]); console.log(results[1]); });

总结

本节只是总结了node对mysql数据库的各种操作,但如果实际应用起来的话,还远远不够。努力学习中…希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwzfgf.html