gpt4 book ai didi

sql - Node.js SQL Server 代码似乎有误,但仍然有效?

转载 作者:行者123 更新时间:2023-11-29 13:00:43 25 4
gpt4 key购买 nike

尝试按属性(id、user_name、foo、bar 等)选择一个条目;

这是我的套接字代码;

socket.on('database attribute', function(msg) {
queryDriver.getAllEntriesByAttribute(gatheringstable, 'user_name', 'john', function(err, gatherings) {
console.log(gatherings);
io.emit('database attribute', gatherings);
});
});

这是我的数据库驱动代码;

QueryDriver.prototype.getAllEntriesByAttribute = function(table, attribute, value, callback) {
this.dbclient.query('SELECT * FROM ' + table + ' WHERE ' + attribute + '=' + value, function(err, result) {
if(err) {
callback(err);
}
else {
callback(null, result.rows);
}
});
};

如果我们看一下此 SQL 命令的典型语句,它看起来像 "SELECT * FROM table WHERE attribute='value';" .这将从数据库中提取一个具有“john”的“user_name”属性的条目。

这适用于我的 'heroku pg:psql' daemon.

出于某种原因,这在我的代码中不起作用,除非我在命令中更改“值”和“属性”的位置。像这样;

socket.on('database attribute', function(msg) {
queryDriver.getAllEntriesByAttribute(gatheringstable, 'john', 'user_name', function(err, gatherings) {
console.log(gatherings);
io.emit('database attribute', gatherings);
});
});

然后它将对我的 heroku 实现正常工作,我可以调用它并获得 [{"id":1,"user_name":"john"}]但它拒绝在我的“heroku pg:psql”守护进程中工作。

我是否发现了世界上最良性的 SQL 错误?

现实会崩溃吗?

为什么这是相反的? "user_name"="john"是您调用它的实际方式,但是 "john"="user_name"是唯一适合我的正确方法。

最佳答案

改变:

'SELECT * FROM ' + table + ' WHERE ' + attribute + '=' + value

'SELECT * FROM ' + table + ' WHERE "' + attribute + '"=' + value

在您的驱动程序代码中,我猜应该让您使用“正确”的顺序。

顺便说一句,对于 sql,如果您检查 true/false 1=2 或 2=1 没有区别,因此“标准”顺序确实是人类的偏好,而不是更多

关于sql - Node.js SQL Server 代码似乎有误,但仍然有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31017373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com