2016-03-30 15 views
0

Aşağıdaki kodda, veritabanını üç parametreye (arama türü, arama terimi, bir sorguda farklı arama türlerini birbirine bağlayan operatör) temel alarak sorgulamaya çalışıyorum. Gördüğünüz gibi, terimleriyle birlikte iki arama türü verdim, böylece sorgu, yazarın WayneRooney VE etiketin UCL olduğu arama gibi olacaktır. Daha sonra, yazar x, yazar y, z adından ve a etiketine dayalı arama gibi ikiden fazla arama türüne sahip olabilir.Düğüm JS Parse Hatası MySQL Sözdizimi

var search = ['Author','Tag']; 
    var term = ['WayneRooney','UCL']; 
    var operator = 'AND'; 

    var queryString = "select Tweet.ID, Tweet.Label, Tweet.TDate, Tweet.RetweetID, User.Name, User.ScreenName from Tweet, User where"; 

    for(var i in search){ 
     if(search.indexOf(search[i]) != 0){ 
      queryString += operator; 
     } 

     if(search[i] == 'Author') 
     { 
      queryString += "Tweet.UserID IN (select ID from User where ScreenName = '"+ term[i] +"') AND User.ID IN (select ID from User where ScreenName = '"+ term[i] +"')"; 
     } 
     else if(search[i] == 'Mention') 
     { 
      queryString += "select Tweet.ID, Tweet.Label, Tweet.TDate, User.ScreenName, User.Name, Tweet.RetweetID from Tweet, User where Tweet.ID IN (select TweetID from TweetMention where UserID IN (select ID from User where ScreenName = '"+ term[i] +"')) AND User.ID = Tweet.UserID"; 
     } 
     else if(search[i] == 'Tag') 
     { 
      queryString += "select Tweet.ID, Tweet.Label, Tweet.TDate, User.Name, User.ScreenName, Tweet.RetweetID from Tweet, User where Tweet.ID IN (select TweetID from TweetHashs where HashID IN (select ID from Hashtag where Label = '"+ term[i] +"')) AND User.ID = Tweet.UserID"; 
     } 
    }; 

    var query = connection.query(queryString, function(err, rows) { 
     if (err) { 
      throw (err); 
     } 
     console.log(rows); 
     //res.write(JSON.stringify(rows)); 
     var tweet = JSON.parse(JSON.stringify(rows)); 
     var queries_made = 0; 
     var queries_success = 0; 

aldım hatadır:

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 '.UserID IN (select ID from User where ScreenName = 'WayneRooney') AND User.ID IN'at line 1 

Sorunun ne olduğunu anlamaya çalıştı ama yapamadım.

cevap

3

queryString ürününüze iliştirdiğinizde eksik alanları kaçırıyorsunuz, aksi takdirde aşağıdaki gibi anahtar kelimeler alabilirsiniz: whereTweet.UserID IN ... veya ANDTweet.UserID IN ....

+0

Hepimizin daha önce içine girdiği bir çukur! – deadlock