connection.query返回数据


var mysql = require('mysql');

var connection = mysql.createConnection(
    {
        host: 'localhost',
        user: 'root',
        password: 'root',
        port: 3306,
        database: 'covid19'
    });

connection.connect();

var sql = `select * from all_information`;

connection.query(sql,(err, result) => {
    if(err){
            console.error('error',err)
            return;
        }

    a = result[0];

    })

connection.end()

console.log(a)

打印a发现是defind,如何才能把result的值赋值给a并打印出来啊。

你先改成这样验证一下


var mysql = require('mysql');
 
var connection = mysql.createConnection(
    {
        host: 'localhost',
        user: 'root',
        password: 'root',
        port: 3306,
        database: 'covid19'
    });
 
connection.connect();
 
var sql = `SELECT 1 + 1 AS solution`;
 
connection.query(sql,(err, result) => {
    if(err){
            console.error('error',err)
            return;
        }
 
    a = result[0];
 console.log(a)
    })
 
connection.end()
 

控制台打印error了吗?打印了的话就是出错了,下面的赋值语句执行不了

按照逻辑,console.log(a)应该放在a = result[0];之后,如果要按现在的结构,那么应该在外边定义一个var a;

这里的connection.query是异步操作,所以会先执行你最后的 console.log(a),所以a是未定义会报错或者undefined