【问题标题】:Node MySQL: Return a value from a column节点 MySQL:从列中返回一个值
【发布时间】:2017-11-03 22:11:52
【问题描述】:

我在 Node 应用程序 Discord bot 中使用 mysql。我想从列中选择一个值,但在这样做时遇到了麻烦。这是我的代码:

let prefix;

connection.query(`SELECT * FROM guilds WHERE guildid = ${message.guild.id}`, function(error, commands) {
    if (error) throw error;

    if (commands.length) {  // the guild is in my database
        commands.forEach(value => 
            prefix = value.prefix;
            console.log(value.prefix) // doesn't fire
        }
    }
});

message.channel.send(prefix.length) // crashes [Cannot read property length of undefined]

我现在将第 1 行中的 prefix 设置为 "3",它按预期工作(我认为),打印出我数据库中的值,如下所示:

| guildname | guildid | ownername | ownerid | prefix |
------------------------------------------------------
| MyServer  | 7373732 | Rusty     | 636363  | !      |

【问题讨论】:

    标签: javascript mysql sql node.js


    【解决方案1】:

    控制台日志事件未触发意味着查询的结果集为空。 虽然看起来这不是您使用的确切代码,但 forEach 的参数列表看起来是错误的。

        (value => 
            prefix = value.prefix;
            console.log(value.prefix) // doesn't fire
        }
    

    尝试让 sql 引擎通过 sql 参数包含变量值,而不是使用字符串插值。我的意思是:

    connection.query('SELECT * FROM guilds WHERE guildid = ?',[message.guild.id], function(error, commands) { ...
    

    https://www.sitepoint.com/using-node-mysql-javascript-client/

    message.guild.id 的值是多少?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 2019-11-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多