mysql - MySQL 语法中的 Node JS 解析错误

标签 mysql node.js

在下面的代码中,我试图根据三个参数(搜索类型、搜索词、在一个查询中连接不同搜索类型的运算符)查询数据库。如您所见,我给它提供了两种搜索类型及其术语,这样查询就像作者是 WayneRooney 且标签是 UCL 的搜索一样。之后,它可能有两种以上的搜索类型,例如基于作者 x、作者 y、提及 z 和标签 a 的搜索。

    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;

我得到的错误是:

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

我试图找出问题所在,但我做不到。

最佳答案

附加到您的 queryString 时您缺少前置空格,否则您会得到连续的关键字,例如:whereTweet.UserID IN ...ANDTweet .UserID IN ....

关于mysql - MySQL 语法中的 Node JS 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36309542/

相关文章:

php - 在PHP中存储下拉框选择

mysql - Query中Group by的奇怪行为需要优化

mysql - 删除加入中不存在的记录

node.js - 错误! oracledb 错误! NJS-067 : a pre-built node-oracledb binary was not found for darwin arm64

node.js - 使用 node.js/express 自动 HTTPS 连接/重定向

javascript - 在 Node 中使用 Breeze.js EntityManager

javascript - 代码 : "ER_PARSE_ERROR", errno : 1064, mySQL

MYSQL 查询在子查询或连接中使用 id

javascript - Socket.io 客户端由于 ping 超时/传输关闭而断开连接

node.js - Docker 不更新目录中的更改