gpt4 book ai didi

mysql - Node.js 和 mySQL 问题

转载 作者:行者123 更新时间:2023-11-29 20:43:24 26 4
gpt4 key购买 nike

我正在运行一个查询,它给出了令人困惑的结果。我有一个node.js 服务器,它从客户端的表单中获取一些用户输入,并使用socket.io 获取服务器上的输入。这是接收用户输入后运行的函数

databaseCheck(data);

function databaseCheck(userInput){

var mysql = require('mysql');
var connection = mysql.createConnection({
host : '12.34.56.78',
user : 'user',
password : 'password',
database : 'db'
});
connection.connect();

var query = connection.query('SELECT * from `table` WHERE `email` = userInput', function(err, rows, fields) {
if (!err) console.log(rows[0].username);
else console.log("connection failure");
});

connection.end();
}

因此,每当我使用此代码时,它都会不断在屏幕上打印“连接失败”。当我用“example@email.com”替换 userInput 时,这种情况不会发生,所以我猜测在查询中使用变量 userInput 存在一些问题。有人可以告诉我我的代码有什么问题吗?

最佳答案

您不仅需要通过将userInput附加到字符串来传递它,还需要对其进行转义,以便查询将其识别为字符串:

connection.connect();

var query = 'SELECT * from `table` WHERE `email` = ' + JSON.stringify(userInput);

console.log(query);

connection.query(query, function(err, rows, fields) {
if (!err) console.log(rows[0].username);
else console.log(err.name, err.message);
});

connection.end();

通过显示实际错误而不是一般消息,它还有助于使错误消息提供更多信息。

最后,放入connection.end();回调内部。根据您所说的,它的工作方式似乎就像您所拥有的那样,但在使用连接的异步进程回调之前结束连接通常是一个坏主意。

忽略我最后的评论,看来我在这个特殊情况下错了。根据the repository documentation ,它说:

Closing the connection is done using end() which makes sure all remaining queries are executed before sending a quit packet to the mysql server.

关于mysql - Node.js 和 mySQL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38516992/

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