gpt4 book ai didi

mysql - NodeJS 和 MariaDB。避免对每一列进行查询

转载 作者:行者123 更新时间:2023-11-29 16:41:13 25 4
gpt4 key购买 nike

我正在使用 NodeJS 和 MariaDB。我有很多表,一些用户可以通过请求更改值。我不想为用户想要更新的每一列准备查询,例如:

module.exports.updateName = (name,id) =>{
return pool.query("UPDATE Users SET name=? WHERE user_id=?;", [name,id])
}
module.exports.updateAge = (name,id) =>{
return pool.query("UPDATE Users SET age=? WHERE user_id=?;", [age,id])
}

我想 build 一些东西。就像一个需要表、列和值的模板。为了防止 SQL 注入(inject)攻击,我已经在使用 ?值的占位符。不幸的是,MariaDB 不支持像 ?? 这样的标识符的占位符。我觉得仅将表名称或列连接到查询字符串并不安全,例如:

"SELECT INTO " + tablename +"(" + columns + ")" ...

我的想法是在每次服务器启动时查询我的数据库中存在哪些表和列名称并将它们存储在列表中。然后我可以检查传递的表和列字符串是否有效。

这个想法有意义还是一种常见的方式?将如何处理这个问题?我感谢每一个建议!

问候

最佳答案

好吧,我要做的是创建一个包含参数、用户、列、值的存储过程,并在其中决定使用哪个更新语句,如下所示:

create procedure updateValues (in uid int, in columnid int, in value int)...
begin
if columnid = 0 then
update users set name = value;
else if columnid = 1 then
update users set age = value;
end if
end

关于mysql - NodeJS 和 MariaDB。避免对每一列进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53324698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com