Search code examples
javascriptmysqlnode.jsexpressthemoviedb-api

Can not insert data into mysql using Node.js


I'm trying to insert movie data accessed from TMDB api. I am able to access the database and able to insert the data. But variables in Values( ) are being inserted into the table as values.

Here is the code I'm using:

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 ****************");
                    }

                });
            }

        });

    });
});

Something wrong with my insert query syntax. Any suggestions would be appreciated.


Solution

  • Use this:

    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
    });