node.js and mySQL issue -


i running query gives me confusing results. have node.js server takes user input form on client side , uses socket.io input on server. here function runs after receiving user input

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 * `table` `email` = userinput', function(err, rows, fields) {   if (!err) console.log(rows[0].username);      else console.log("connection failure");  });   connection.end(); } 

so when ever use code, keeps printing "connection failure" screen. doesn't happen when replace userinput "example@email.com" i'm guessing there problem using variable userinput in query. can tell me wrong code?

not need pass userinput appending string, need escape query recognizes string:

connection.connect();  var query = 'select * `table` `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(); 

it helps make error message more informative displaying actual error instead of generic message.

lastly, put connection.end(); inside callback. according said, appears work had but it's bad idea end connection before asynchronous process using connection has called back.

ignore last comment, appears wrong in particular case. according the repository documentation, says:

closing connection done using end() makes sure remaining queries executed before sending quit packet mysql server.


Comments