【问题标题】:Node mysql in Discord.js returns empty result/arrayDiscord.js 中的节点 mysql 返回空结果/数组
【发布时间】:2020-02-10 08:54:48
【问题描述】:

我正在尝试创建一个命令,从 id 是我在命令中使用的表中获取所选查询,例如:!db 1 但我遇到了问题。 问题是结果是空的。

我的代码:

const Discord = require('discord.js');
const mysql = require('mysql');

module.exports.run = async (bot, message, args, connection) => {
    const asd = args.slice(1,2).join(' ');

    let querystring = `SELECT * FROM test WHERE id = '${asd}'`

    connection.query(querystring, function (err, results, rows) {
    if (err) throw err;

    console.log(results);
    });

}

module.exports.help = {
    name: "db"
}

感谢您的帮助!谢谢!

【问题讨论】:

  • id 是你数据库中的字符串吗?
  • 请在您的数据库中包含有关该表的更多信息,因为您提供的信息我们无能为力
  • @Caltrop 是 - imgur.com/a/go67JmA 您需要什么作为信息?如果您需要有关表格的更多信息,请告诉我。 (这是 HeidiSql 的截图,也是保加利亚语的,抱歉。
  • 我的意思是一个 VARCHAR。在您的代码中,您将 ${asd} 用单引号括起来,所以我认为它试图将您的值匹配为 VARCHAR
  • @AyushGupta 不,id 是 INT,我也尝试用 WHERE membername 替换列 WHERE id,但结果仍然显示 []...

标签: mysql node.js discord.js


【解决方案1】:

From the screenshot you posted earlier,您的id 列是INT 类型。此代码正在搜索,好像该列是VARCHAR

试试这个:

const id = args.slice(1, 2).join(' ');
if (isNaN(id)) { return; } // if the input isn't a number
connection.query(`SELECT * FROM test WHERE id = ${Number.parseInt(id)}`, (err, res, rows) => {
    if (err) throw new Error(err);
    console.log(res);
});

重要提示:此代码允许SQL Injection。模板文字防止这种情况发生。

【讨论】:

  • 感谢您的回答,但我收到此错误:Error: ER_BAD_FIELD_ERROR: Unknown column 'NaN' in 'where clause'
  • @ИвайлоМ。如果提供的值不是数字,则应避免执行查询。例如,我更新了我的答案,在查询前检查了isNaN()
  • 仍然得到相同的错误:/ Idk 为什么我什至在第一名得到错误...我使用命令!db 3 这意味着控制台应该导致包含@ 987654330@ 的行987654331@专栏。甚至尝试用${Number.isInteger(id)} 替换${Number.parseInt(id)},但结果我得到[]...
猜你喜欢
  • 1970-01-01
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-22
  • 2019-08-26
  • 2012-10-21
相关资源
最近更新 更多