私は紛らわしい結果をもたらすクエリを実行しています。私は、クライアント側のフォームからユーザー入力を受け取り、socket.ioを使用してサーバー上の入力を取得するnode.jsサーバーを持っています。ここでは、ユーザー入力を受け取った後に実行する機能があります。node.jsとmySQLの問題
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();
}
このコードを使用すると、画面に「接続エラー」が表示され続けます。私がuserInputを "[email protected]"に置き換えたときに起こることはないので、クエリーで変数userInputを使用する際に問題があると思います。誰かが自分のコードに何が間違っているか教えてもらえますか?
固定していただきありがとうございます。私はまた、これを使用するときに動作することに気づいた:var query = 'table'からのSELECT * WHERE 'email' ="' + userInput + '"; – Jay
@Jayその方法は 'userInput'に' ''が含まれていないとうまくいきます。さもなければ、あなたのSQLクエリはコードインジェクションに対して脆弱です。 –