【发布时间】:2019-09-06 04:27:49
【问题描述】:
我一直在尝试运行一个非常简单的 MySQL 查询,但无济于事。我搜索了论坛,尝试了多种方法,但这对我的一生都不起作用。
我希望有人能指出错误,因为它可能非常愚蠢或非常简单。
我有一个 nodejs 应用程序,它有一个异步承诺设置到 MySQL 以从数据库中提取数据。数据来自游戏制作者,我认为这可能是问题的一部分。如果我使用我正在寻找的名称运行查询本身:
所以如果我这样输入查询(通过输入我想拉入查询的名称),它将提取数据,结果 1:
pool.query('SELECT * FROM rp_accounts WHERE username=' +mysql.escape('john'), function(err, rows){
if(err) {
throw err;
}else{
// Do something with result.
console.log("Result: "+rows.length);
}
})
但是如果我尝试将变量传递给它
var playerName = value;
console.log("test:"+playerName+":test");
pool.query('SELECT * FROM rp_accounts WHERE username=' +mysql.escape('playerName'),
function(err, rows){
if(err) {
throw err;
}else{
// Do something with result.
console.log("Result: "+rows.length);
}
})
它的结果为 0,我知道从数据库中提取数据需要时间,但如果我“硬输入”我正在寻找的名称,查询工作完全正常,连接、查找并拉出一行。 如果我从 gamemaker 传递一个变量(通过缓冲区完成),我可以通过 console.log 看到我正在拉取的名称本身应该正是它需要找到的(在本例中为“john”),它返回 0。
我尝试过 LIKE 语句而不是 =、多种格式(trim()、使用 concat() 添加括号等)多个括号(即:[playerName])、=?使用变量,引号,删除了原始运行的 mySQL 注入保护,还尝试从该行中提取一个特定的表,以查看它是否有太多数据无法通过查询或其他方式获取?但没有,仍然是 0 个结果
收到它后是否有某种格式,它实际上并没有把这个词当作一个词来读? (如果这有意义的话)我是否在寻找应该是字段的行?正如我所看到的,它正在提取正确的用户名来拉 (john),而且看起来这应该没有问题,它让我在墙上又回来了。
感谢任何帮助,仍在学习中,正如我所提到的,我已经尝试了大多数明显的解决方案,但我很容易被忽视。干杯。
【问题讨论】:
-
在查询中使用
playerName删除单引号后尝试。
标签: javascript mysql node.js networking