首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在MySQL数据库中存储MySQL查询...馊主意?

正在MySQL数据库中存储MySQL查询...馊主意?
EN

Stack Overflow用户
提问于 2012-08-12 20:51:09
回答 4查看 2.1K关注 0票数 1

我有一个商店,用户可以在那里购买虚拟物品,例如一次性加电和永久更改用户帐户。这些购买可能会改变不同表中的不同字段,而且可能会有很多项,所以我不想在每次添加新产品时都向PHP文件中添加新的内容。

我正在考虑将查询作为字符串保存到MySQL数据库中,然后当购买商品时,我可以从数据库中获取字符串并像这样运行它。

例如:表items将包含一个字段query_to_run,该字段将包含字符串UPDATE power_ups SET test = test WHERE test = 1,以便在用户购买商品时运行。

这有没有用过,或者有没有更好的方法?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-12 21:06:34

如果我要自己解决这个问题,我会使用OOP PHP来定义一个加电类,这个类具有不同类型的加电类型,根据它们必须进行的数据库编辑类型进行分类。

我认为你正在寻找的是更快的东西,你的解决方案是这样(在短期内),但是当你更新数据库结构或意识到你的旧模型不适合时,当你希望进行改进时会发生什么?

因为您的SQL查询是hard-coded查询,所以您必须重写每个查询,并且每次新启动所需的时间都比围绕它们构建soft-coded框架所需的时间更长。

所以,是的,只要您不介意在将来牺牲应用程序的可扩展性和灵活性,您的方法就会在实践中发挥作用。

票数 1
EN

Stack Overflow用户

发布于 2012-08-12 21:07:09

在数据库中存储查询可能比您想象的更安全。如果插入查询的唯一方法是通过您自己的代码,那么您将不会真的面临注入攻击的风险(假设您自己编写所有代码,并且您没有包括像and where ID=$POST这样的东西……在他们身上。

因此,在这一点上,是的,将SQL保存在数据库中是安全的。

这就是但是。

但是,我认为您最好编写一个简单的对象来处理这些类型的请求。您可以非常容易地创建一个安全可靠的对象,该对象接受UserID并在查询中将其发送到数据库-而不需要在数据库中存储任何SQL (例如,似乎唯一要更改的是用户ID?

票数 2
EN

Stack Overflow用户

发布于 2012-08-12 20:58:21

我更希望你通过php来做这件事,因为它更高效,更不容易受到攻击。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11922318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档