如何在 MySQL 查询中传递 Javascript 变量
Posted
技术标签:
【中文标题】如何在 MySQL 查询中传递 Javascript 变量【英文标题】:How to pass Javascript variables in MySQL query 【发布时间】:2018-02-17 15:58:34 【问题描述】:我做了一些研究,得到的答案相互矛盾,所以就这样吧。你必须先将 JS 变量传递到 php 中还是可以将它们直接插入到 mysql 表中?我在 node.js 中运行了这个,谢谢!
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()) );
);
【问题讨论】:
如果你在Node上,可以直接做。 但不是那样...请记住,使用节点您有服务器端 javascript... 【参考方案1】:你的查询字符串应该是这样的:
"INSERT INTO data_9_17 (partNumber, description, price) VALUES ('" + part[i] + "', '" + des[i] + "', '" + price[i] + "')";
您可以使用+
连接值。签出this。
编辑:我犯了一个错误。没有放入'
。现在修复...
无论如何,J Johnson 是对的。由于 SQL 注入,最好使用准备好的语句。
【讨论】:
【参考方案2】:你可以使用准备好的语句,像这样:
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
【讨论】:
我只打算在我的桌面上运行它,但我完全明白你在说什么。谢谢,J 约翰逊! 没问题@GarrettPenfield :)【参考方案3】:您需要将查询字符串与变量的值连接起来:
var sql = "INSERT INTO data_9_17 (partNumber, description, price) VALUES (" + part[i] + ", " + des[i] + ", " + price[i] + ")";
出于安全考虑,我建议你使用prepared statement:
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)
.....
.....
.....
【讨论】:
以上是关于如何在 MySQL 查询中传递 Javascript 变量的主要内容,如果未能解决你的问题,请参考以下文章
JavaScrip ajaxt和python flask通过json传递数据的方法
Socket.io、Node.js:如何在 javascript.js 中将 javascript 变量传递给 mysql 查询?