Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我们可以使用promise mysql模块将对象作为类sql数组中的参数传递,以防止nodejs中的sql注入吗_Javascript_Mysql_Sql_Node.js - Fatal编程技术网

Javascript 我们可以使用promise mysql模块将对象作为类sql数组中的参数传递,以防止nodejs中的sql注入吗

Javascript 我们可以使用promise mysql模块将对象作为类sql数组中的参数传递,以防止nodejs中的sql注入吗,javascript,mysql,sql,node.js,Javascript,Mysql,Sql,Node.js,我想向SQL查询传递一个对象 我知道这是可行的: connection.query('SELECT * FROM projects WHERE status = ?', ['active'] ) 使用命名对象属性作为参数的正确语法是什么?大概是这样的: connection.query('SELECT * FROM projects WHERE status = :status ', { status: 'active' } ) 这种可能性不是现成的,但mysqljs(mys

我想向SQL查询传递一个对象

我知道这是可行的:

connection.query('SELECT * FROM projects WHERE status = ?',
    ['active']
)
使用命名对象属性作为参数的正确语法是什么?大概是这样的:

connection.query('SELECT * FROM projects WHERE status = :status ',
    { status: 'active' }
)

这种可能性不是现成的,但mysqljs(mysql所依赖的promise)解释了如何通过将自定义函数分配给
connection.config.queryFormat
来实现这一点:

如果您希望使用另一种类型的查询转义格式,则有 可用于定义自定义格式的连接配置选项 功能。如果要使用,可以访问连接对象 内置的.escape()或任何其他连接函数

下面是如何实现另一种格式的示例:

connection.config.queryFormat = function (query, values) {
  if (!values) return query;
  return query.replace(/\:(\w+)/g, function (txt, key) {
    if (values.hasOwnProperty(key)) {
      return this.escape(values[key]);
    }
    return txt;
  }.bind(this));
};

connection.query("UPDATE posts SET title = :title", { title: "Hello MySQL" });

我不确定API是否支持您的想法,因为第二个参数需要是一个要绑定的值数组。@TimBiegeleisen好的,谢谢您为我节省了时间!坦克斯!!