在node-mysql中执行SELECT查询时接收到错误的id字段

问题描述 投票:0回答:1

我正在使用node-mysql将node.js与MySQL数据库连接,因为我需要获取一些数据。但是,我收到了错误的id字段。

代码:

const mysql = require('mysql');
const con = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "secret_password",
    database: "secret_database"
});

function setMatch(idPlayer, idPartner) {
    return new Promise(function(resolve, reject) {
        const sql1 = "SELECT * FROM game g JOIN players p ON g.partner = p.id WHERE g.player=" + idPlayer + " ORDER BY g.id DESC LIMIT 1;";
        console.log(sql1)
        con.query(sql1, function(err, results) {
            console.log(results);
        });
    })
}

结果:enter image description here

如果我尝试在phpmyadmin中运行相同的SQL查询,则会得到正确的信息:enter image description here

您可以看到,在node.js中,我收到一个数字1作为ID,但是在phpmyadmin中,它是16。为什么会这样?

第二个:enter image description here

这些是SQL查询,以防您需要复制和粘贴它们:

SELECT * FROM game g JOIN players p ON g.partner = p.id WHERE g.player=3 ORDER BY g.id DESC LIMIT 1;
SELECT * FROM game g JOIN players p ON g.partner = p.id WHERE g.player=1 ORDER BY g.id DESC LIMIT 1;

我使用order by并限制为1,因为有多个结果,并且我总是需要获取最后一个,但是我认为这与该问题无关。

mysql node.js node-mysql
1个回答
0
投票

因此,简短的答案是通过对要检索的每个字段使用正确的别名来防止冲突,例如:

select g.id as gameId, p.id as partnerId, * from game g JOIN ...

然后您应该收到所有ID列。 PHPMyAdmin的工作方式与其他一些驱动程序不同,例如,您刚刚体验的在Node.js中。

这是一种很好的做法,以这种方式为您的字段加上别名,以免将来发生冲突。

© www.soinside.com 2019 - 2024. All rights reserved.