在node.js mysql中作为表名变量

时间:2015-06-14 13:21:18

标签: mysql node.js

我使用node.js和mysql模块。当我执行以下代码时,我希望将table_name设置为变量,而不是静态表名。例如,我希望table_name是今天的日期。

   connection.query(
    "CREATE TABLE `<table_name>` (" +
    "   `title` varchar(50) NOT NULL,"+
    "   `text` varchar(50),"+
    "   `created` timestamp NULL,"+
    "   PRIMARY KEY (`title`));"
);

是否可以将表名设置为node.js的mysql模块中的变量?

最好的问候

3 个答案:

答案 0 :(得分:6)

模块内置了处理案例的方法,你需要转义这样的变量:

var tableName = 'THETABLE';

connection.query('CREATE TABLE ?? (column_name1 data_type(size), column_name2 data_type(size), column_name3 data_type(size))', [tableName], function (error, results) {
  // error will be an Error if one occurred during the query
  // results will contain the results of the query (if any)
});

您可以在此处详细了解此功能:

https://github.com/felixge/node-mysql/#escaping-query-identifiers

答案 1 :(得分:0)

您使用的是没有有效的sql create table语法。

你想要做的是这样的事情:

while (size ())
{
    erase(begin());
}

如果您想稍后编写项目,则必须使用INSERT INTO

答案 2 :(得分:-1)

enter image description here

async function createTable(db_connection,tableName) {
await new Promise((resolve, reject) => {
    db_connection.connect(function(err) {
      if (err) {
        return console.error('error: ' + err.message);
      }
        


      db_connection.query('CREATE TABLE ?? (doc_source_type varchar(255) default null, 
      doc_id varchar(255) default null, company varchar(255) default null)', 
      [tableName], 
      function(err, results) {
        if (err) {
          console.log(err.message);
          reject(err);
        }
        else{
            console.log("Table created successful");
            resolve(results);
        }
      });


    
});

});
}

或者你甚至可以尝试不同的方法

async function setTable(db_connection,tableName) {
await new Promise((resolve, reject) => {
    db_connection.connect(function(err) {
      if (err) {
        return console.error('error: ' + err.message);
      }
        

          let createTodos =`create table if not exists ??(
                      id int primary key auto_increment,
                      doc_id varchar(255) default null,
                      doc_source_type varchar(255) default null,
                      company varchar(255) default null,
                      customer varchar(255) default null,
                      rubric_version varchar(255) default null,
                      assessment_type varchar(255) default null,
                      indexed_at datetime default null,
                      assessment_date datetime default null,
                      industry_type varchar(255) default null
                  )`;
                  
     //console.log(createTodos);

      db_connection.query(createTodos, [tableName], function(err, results) {
        if (err) {
          console.log(err.message);
          reject(err);
        }
        else{
            console.log("Table created successful");
            resolve(results);
        }
      });
    
});

});
}