javascript - Node.js + MySQL -> 从外部 server.js 进行数据库查询?

标签 javascript mysql node.js

例如,我有一个注册表单,还有一个用于提交详细信息的按钮,所以一旦我单击该按钮,我希望它们被发送到 mysql 数据库。不幸的是,我只知道如何在 server.js 上执行数据库查询,但如何在任何脚本上执行此操作?下面是行不通的方法

 $("button#submit").click(function () {
    var username = $('#usr').val();
    var password = $('#pwd').val();

    db.query("INSERT OR REPLACE INTO user_data (username, password) VALUES (" + username + "," + password + ")");
    //// something like this
 })

最佳答案

您无法从前端对 mySql 数据库运行查询。这将是一个巨大的安全问题。您必须将这些值发送回后端,并使用这些值从那里查询数据库。

还要确保使用准备好的语句。您的查询对 mysql 注入(inject)是开放的。

enter image description here

您可以使用node-mysql和mysql.format()运行准备好的语句:

var sql = "SELECT * FROM ?? WHERE ?? = ?";
var inserts = ['users', 'id', userId];
sql = mysql.format(sql, inserts);

根据您的查询进行翻译,这将是

let query = "REPLACE INTO user_data (username, password) VALUES (?,?)";
let inserts = [username, password]; // however you obtain them in the backend
mysql.query(mysql.format(query, inserts));

请注意,我将 INSERT OR REPLACE 更改为 REPLACE ,因为这是一个语法错误。

关于javascript - Node.js + MySQL -> 从外部 server.js 进行数据库查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42970499/

相关文章:

javascript - 在javascript中解析文本文件?或者更好的东西?

node.js - mongodb 无法连接到服务器 [127.0.0.1 :27017] on first connect

mysql - 如何比较用 SQL 查询分隔的逗号的数值

mysql - mysql 用户可以限制每个选择查询的最大行数吗?

javascript - 从 nodejs 运行 InDesign ExtendedScript

node.js - 是否可以让服务器运行 node.js 以在运行时安装和运行模块?

javascript - Android webview脚本标签不加载源网页

javascript - 如何使用 jquery.MultiFile.js 插件选择多个文件?使用单独的关闭按钮一次选择多个文件?

javascript - 简单的浏览器对称 AES 加密

mysql - 备份mysql数据库之前升级wamp