Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用WHERE子句从JavaScript查询MySQL数据库_Javascript_Mysql - Fatal编程技术网

使用WHERE子句从JavaScript查询MySQL数据库

使用WHERE子句从JavaScript查询MySQL数据库,javascript,mysql,Javascript,Mysql,我有一个数据库,里面有我的node.js应用程序的名称和地址。该应用程序使用输入到文本提示符中的内容查询名称行 我意识到它们是错误的,现在就把它们翻过来,如果用户搜索Ubuntu,我希望数据库返回,JavaScript新手,任何帮助都将不胜感激 我现在的代码 var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'root'

我有一个数据库,里面有我的node.js应用程序的名称和地址。该应用程序使用输入到文本提示符中的内容查询名称行

我意识到它们是错误的,现在就把它们翻过来,如果用户搜索Ubuntu,我希望数据库返回,JavaScript新手,任何帮助都将不胜感激

我现在的代码

var mysql      = require('mysql');
var connection = mysql.createConnection({
 host     : 'localhost',
 user     : 'root', //just using root for my personal testing.
 password : 'root',
 database : 'Sonic'
 });

 connection.connect();

  //make the query string
  var sql01    = 'SELECT Name FROM SonicURl WHERE name = ' +      
  connection.escape(input);
 //Attempt to query the database over the connection.
  connection.query( sql01, function(err, rows) {
if (err){
  console.log('Error');
 } else if (rows[0] !== undefined && input == rows[0].name) {

 console.log(rows[0].address);
}
 connection.release();
 });
  //shut down code
   process.on( 'SIGINT', function() {
   console.log( "\nGoodbye!");
   // Other stuff that needs ending and what not.
   process.exit( );
   });

既然您提到node.js,我假设您正在服务器端执行此操作。 使用node.js mysql模块

//After mysql connection have been made, and it is called connection.

//make the query string
var sql01    = 'SELECT * FROM yourTable WHERE name = ' + connection.escape(yourTextInput);

//Attempt to query the database over the connection.
connection.query( sql01, function(err, rows) {
  if (err){
      console.log('Error');
  } else if (rows[0] !== undefined && yourTextInput == rows[0].name) {

    //Do something with address, (rows[0].address).
 }
  connection.release();
});
更新:

就我个人而言,我使用池连接,但试一试。 这是处理正常连接的标准/推荐方法

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : 'root',
 database  : 'sonic'
});

connection.connect(function(err) {
if (err) {
  console.log('error connecting: ' + err.stack);
  return;
}
console.log('connected as id ' + connection.threadId);


//make the query string
var sql01    = 'SELECT * FROM SonicURl WHERE name = ' +connection.escape(input);

//Attempt to query the database over the connection.
connection.query( sql01, function(err, rows) {
if (err){
  console.log('Error, no result');
} else if (rows[0] !== undefined && input == rows[0].name) {
 console.log(rows[0].address);
}
 connection.end();
console.log('Connection should be terminated and this should be empty or undefined:' + connection.threadId);
});  
});
如果希望保留当前结构,而不检查连接到DB是否有任何错误(如上面的示例所示),也可以简单地执行以下操作:

connection.connect();

//make the query string
var sql01    = 'SELECT * FROM SonicURl WHERE name = ' + connection.escape(input);
//Attempt to query the database over the connection.
connection.query( sql01, function(err, rows) {
if (err){
 console.log('Error');
} else if (rows[0] !== undefined && input == rows[0].name) {

 console.log(rows[0].address);
}
});
connection.end();

注意:您不应该选择name,因为这只会返回name=input.的name值

这里有很多事情要处理

  • 在输入和表的数据中,您的比较都应该是小写的。(即Javascript中toLower()和MySQL中toLower()的用法)
  • 不要将参数括在引号中;应该是 var sql01='从SonicURl中选择名称,其中名称='+'\''+连接。转义(输入)+'\''; 因为它是一个字符串值
  • 也许最后一件事是列名-名称-在查询中也必须用驼峰大小写-尽管我相信这不是一个严格的要求

  • 嗯,connection.release显然不是一个函数,我在这里遗漏了什么吗?你能发布你的连接代码吗?我会用代码编辑问题。我的坏,connection.release只用于池连接。mysql查询的标准。建议关闭原因:不清楚,或输入错误,基于接受答案下的评论。我不知道你是否费心检查,但有一个接受的答案,我问的很清楚,用户2267175似乎知道我在问什么?我很困惑。。。是的,自动更正决定破坏我的问题;你需要做的就是逃跑。