如何将MySQL查询结果按行提取并保存为变量
提取MySQL查询结果中的字段并赋值变量
你当前通过mysql模块查询得到的result是一个数组,数组内的RowDataPacket对象可以像普通JavaScript对象一样直接访问属性,下面分两种场景说明提取字段的方法:
处理单条数据(LIMIT 1的情况)
直接通过数组索引获取第一个结果对象,再访问email属性即可完成赋值:
var mysql = require('mysql'); var con = mysql.createConnection({ host: "123.456.123.456", user: "user", password: "pass", database: "db" }); con.connect(function(err) { if (err) throw err; con.query("SELECT * FROM orders LIMIT 1", function (err, result, fields) { if (err) throw err; // 提取email字段赋值给变量 const email = result[0].email; console.log(email); // 输出对应的邮箱地址 // 后续流程可直接使用email变量 con.end(); }); });
处理多条数据(表内三行数据的情况)
如果要查询所有三行数据并提取每一行的email,可以遍历结果数组来处理:
var mysql = require('mysql'); var con = mysql.createConnection({ host: "123.456.123.456", user: "user", password: "pass", database: "db" }); con.connect(function(err) { if (err) throw err; con.query("SELECT * FROM orders", function (err, result, fields) { if (err) throw err; // 用数组存储所有提取出的email const emails = []; // 遍历每一行数据 result.forEach(row => { const email = row.email; emails.push(email); // 此处可对单个email执行后续业务逻辑 console.log(email); }); // 后续可通过emails[0]、emails[1]、emails[2]分别调用三行数据的邮箱 con.end(); }); });
额外提示
为避免查询结果为空时出现报错,建议增加非空判断:
if (result.length > 0) { const email = result[0].email; // 执行后续操作 } else { console.log("未查询到任何数据"); }
内容的提问来源于stack exchange,提问作者Kyle T
相关产品推荐
相关产品推荐

