sid*_*diq 3 mysql sql-server node.js
我正在将应用程序的数据库从 MySQL 更改为 MSSQL。我为 MySQL 数据库发送如下参数。
var sql = require('./db.js');
sql.query("select * from table where field1 = ? or field2 = ? ", [field1val, field2val], function (error, results) {
if(error){
//handle error
}
else{
//handle the results
}
}
Run Code Online (Sandbox Code Playgroud)
如何在 MSSQL 中做到这一点,或者甚至可以这样做?(我正在使用mssql
模块)。
存储过程是唯一的实现方式吗?如果是这样,如何在 Nodejs mssql 模块中做到这一点?
如果我们无法发送参数(自动转义 mysql 中的字符串),在 SQL Server 中运行查询的最佳实践是什么?
KZa*_*der 11
我做参数化的 SQL 查询是这样的:
var sql = require('mssql');
var myFirstInput = "foo bar";
var mySecondInput = "hello world";
sql.input('inputField1', sql.VarChar, myFirstInput);
sql.input('inputField2', sql.VarChar, mySecondInput);
sql.query("SELECT * FROM table WHERE field1 = @inputField1 OR field2 = @inputField2")
.then(function(results)
{
//do whatever you want with the results
console.log(results)
})
.catch(function(error)
{
//do whatever when you get an error
console.log(error)
})
Run Code Online (Sandbox Code Playgroud)
这里发生的事情是sql.input('inputField1', sql.VarChar, myFirstInput)
将@inputField1
使用名为 的变量更改为myFirstInput
。@inputField2
with也会发生同样的事情mySecondInput
。
这将有助于它免受 SQL 注入
Goo*_*tan -5
你可以像这样使用尝试
var id = 1234
var query = (SQL
`SELECT fname, lname, email
FROM users
WHERE id = ${id}`
)
var sql = require('./db.js');
sql.query("select * from table where field1 = ${field1val} or field2 = ${field2val} ", [field1val, field2val], function (error, results) {
if(error){
//handle error
}
else{
//handle the results
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12572 次 |
最近记录: |