2017-09-08 67 views
0

我已經完成了一些研究,並得到了相互矛盾的答案,所以就這樣了。你必須首先將JS變量傳遞給PHP,或者你能直接將它們插入MySQL表嗎?我有這個在node.js中運行,謝謝!如何在MySQL查詢中傳遞Javascript變量

var part = []; 
var des = []; 
var price = []; 
var request = require('request'); 
var cheerio = require('cheerio'); 
var mysql = require('mysql'); 

var con = mysql.createConnection({ 
    host: "127.0.0.1", 
    user: "root", 
    password: "", 
    database: "parts" 
}); 

request('URL', function(error, response, body) { 
    if (!error && response.statusCode == 200) { 
     var $ = cheerio.load(body); 
     getPartNumber(); 
     getDescription(); 
     getPrice(); 
     con.connect(function(err) { 
     if (err) throw err; 
     for (var i = 0; i<part.length; i++){ 
      var sql = "INSERT INTO data_9_17 (partNumber, description, price) VALUES (part[i], des[i], price[i])"; 
      con.query(sql, function (err, result) { 
       if (err) throw err; 
       console.log("1 record inserted, ID: " + result.insertId); 
      }); 
     } 
}); 

function getPartNumber() { 
$("input[name = 'sku']").each(function() { part.push($(this).val()) }); 
} 

function getDescription() { 
$(".ellipsis_text").each(function() { des.push($(this).text()) }); 
} 

function getPrice() { 
$(".sellprice, .dbl").each(function() { price.push($(this).text()) }); 
} 
} 
}); 
+0

如果您在Node上,則可以直接執行此操作。 – Hackerman

+0

但不是那樣...記住,有節點,你有服務器端JavaScript ... – Hackerman

回答

0

您的查詢字符串應該是這樣的:

"INSERT INTO data_9_17 (partNumber, description, price) VALUES ('" + part[i] + "', '" + des[i] + "', '" + price[i] + "')";

您可以通過使用+ concenate值。檢查this了。

編輯:我犯了一個錯誤。沒有把'英寸現在修正... 反正,約翰遜是對的。由於SQL注入,使用Prepared Statements更好。

+0

啊啊,明白了,謝謝kangaro0! –

0

您可以使用事先準備好的聲明,就像這樣:

var query = 'INSERT INTO data_9_17 (partNumber, description, price) VALUES (?, ?, ?)'; 

con.query(query, [part[i], des[i], price[i]], function(err, results) ...) 

// You will put your variables inside [] 

如果您想了解更多信息,請參閱mysql NPM模塊:

https://www.npmjs.com/package/mysql#escaping-query-values

+0

我只打算在桌面上運行這個,但我完全明白你在說什麼。謝謝,約翰遜! –

+0

沒問題@GarrettPenfield :) –

0

你需要連接你的查詢字符串變量的值:

var sql = "INSERT INTO data_9_17 (partNumber, description, price) VALUES (" + part[i] + ", " + des[i] + ", " + price[i] + ")"; 

出於安全原因,我建議您使用準備好的語句:

var sql = mysql.format("INSERT INTO data_9_17 (partNumber, description, price) VALUES (?, ?, ?)", [part[i], des[i], price[i]); 

con.query(sql, function (err, result) { 
..... 
.....