【问题标题】:Can not insert data into mysql using Node.js无法使用 Node.js 将数据插入 mysql
【发布时间】:2016-02-09 04:00:15
【问题描述】:

我正在尝试插入从 TMDB api 访问的电影数据。我能够访问数据库并能够插入数据。但是Values( ) 中的变量正在作为值插入到表中。

这是我正在使用的代码:

tmdb.search('movie', { query: searchQuery, language: 'en' }, function (err, results) {

    //Informations on first ID
    tmdb.infos('movie', results.results[0].id, { language: 'en' }, function (err, results) {

        console.log("################ RESULTS FROM API ################");

        console.log(results);

        console.log("*********** ENDDD ************");
        console.log("Movie Name: ", results.title);
        var title = results.title;
        console.log("imdb id :", results.imdb_id);
        var movie_id = results.imdb_id;
        console.log("Tagline  :" , results.tagline);
        console.log("Poster :", results.poster_path);
        var pic = results.poster_path;
        console.log("Rating : " , results.vote_average);
        var rating = results.vote_average;
        console.log("Genres  :" , results.genres);
        console.log("Original language  :" , results.original_language);
        console.log("Overview  :" , results.overview);

        var runtime = 100;
        var starring = "myself";
        var director = "myself";
        var genres = "Action";
        var studio = "Fox";
        var year_released = 2016;
        var copies = 10;
        var price = 19;

        var sqlStatement = " SELECT * FROM movies_info where  movie_id='res.id'";

        db.connection.query(sqlStatement, function (err, rows) {

            if (rows.length == 0) {

                var insert = "INSERT INTO movies_info (movie_id,title, runtime, rating,starring,director,genres, studio,year_released,copies,price,poster) VALUES('movie_id','title', runtime, rating,'starring','director','genres', 'studio',year_released,copies,price,'pic')";
                db.connection.query(insert, function (err, rows) {
                    if (err) {
                        console.log("!!!!!!!!!!!!!!Error Inserting data!!!!!!!!!!!!!  " , err);
                        console.log("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                    }
                    else {
                        console.log("************ INSERTED *****************");
                        console.log(rows);
                        console.log("************* END INSERT ****************");
                    }

                });
            }

        });

    });
});

我的插入查询语法有问题。任何建议将不胜感激。

【问题讨论】:

    标签: javascript mysql node.js express themoviedb-api


    【解决方案1】:

    使用这个:

    var movie = {
        movie_id: movie_id, 
        title: title, 
        runtime: runtime,
        rating: rating,
        starring: starring,
        director: director,
        genres: genres,
        studio: studio,
        year_released: year_released,
        copies: copies,
        price: price,
        poster: pic
    }
    
    db.connection.query('INSERT INTO movies_info SET ?', movie, function(err, result) {
        // handle result success or fail here
    });
    

    【讨论】:

    • 整数或字符串无所谓?
    • 当您使用引号时,您将它们设为字符串,因此它们不是作为变量传递的字符串。我可以知道您使用的是哪个节点中的mysql库吗?会让事情变得更容易
    • 我正在使用 mysql 2.10.2 模块
    • 我已经编辑了我的答案。现在检查。使用 SET 比使用 VALUES 更好。 :)
    • 我确实尝试过。我有一个硬编码的变量,它给硬编码的变量一个错误。
    猜你喜欢
    • 1970-01-01
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多