2015-10-04 6 views
0
exports.creategroup= function(callback,name,email,firstname) 
{ 
// var connection=pool.getConnection(); 
var connection=connect(); 
console.log(email); 
console.log(firstname); 
var query="CREATE TABLE "+name+"(membername varchar(50) NOT NULL,email varchar(50) NOT NULL)"; 

    var query1="INSERT INTO'"+name+"'(membername,email) VALUES('"+email+"','"+firstname+"')"; 
console.log(query); 
connection.query(query,function(err,result){ 
    if(err) 
     { 
     console.log("ERROR:"+err.message); 
     } 
    else 
     { 
     if(result.length!==0) 

     { 
      console.log("DATA : "+JSON.stringify(result)); 
      callback(err, result); 
     } 
     else 
     { 
      callback("Invalid Username", result); 
     } 
     } 
    //pool.returnConnection(connection); 
    }); 

// Вставка в запрос дает ошибку. Я не могу понять, какую синтаксическую ошибку я сделал. Может кто-то помочь. Создается таблица. Ошибка я столкнулся во вставке являетсяНевозможно вставить данные в таблицу с помощью Nodejs

ERROR:ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''sad'(membername,email) VALUES('hunur','Sachin Mallikarjun')' at line 1

здесь грустной было принято в качестве аргумента для имени таблицы

ответ

1

Вы поместили таблицу Имя в ' клещи, это не действует. Ниже будет работать:

var query1="INSERT INTO "+name+" (membername,email) VALUES('"+email+"','"+firstname+"')"; 

Пожалуйста, обратите внимание, что вы абсолютно не должны выполнить запрос, как это, как он уязвим для инъекций MySQL. Вместо этого используйте вместо этого escape-узел-mysql.

var query = "INSERT INTO ?? (??,??) VALUES (?,?)"; 
var values = [name,'membername','email',firstname,email]; 
mysql.query(mysql.format(query, values), function(err,result,tableInfo){/*...*/}) 

Таким образом, node-mysql готовит запрос для вас. Каждый? представляет имя таблицы или столбца в то время как каждый? означает значение, которое нужно вставить. Вы можете проверить это

console.log(mysql.format(query,values)); 
+0

Большое спасибо Baao –

+1

@sachinhunur рассмотреть вопрос о принятии ответа, если он решается вопрос http://stackoverflow.com/help/someone-answers –