首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非常灵活的PHP动态查询

问非常灵活的PHP动态查询
EN

Stack Overflow用户
提问于 2011-12-09 11:08:13
回答 2查看 133关注 0票数 0

我从一开始就试图在PHP类中抽象出尽可能多的逻辑。我将所有数据库表的名称作为变量放在我的DBConnection类中。例如,当用户调用$db = new DBConnection();时,它会自动为所有表名创建变量,因此在我目前为止的所有查询中,我都有INSERT INTO $db->userTable (fields and constraints)或SELECT (fields) FROM $db->forumTable (constraints)这样的东西。然而,怎样才是抽象列名的好方法,因为它是非常通用的,所以我不会将列名硬编码到查询中?这样,如果列名之类的东西发生了变化,我就不必再去编辑大量的查询了。感谢您的任何意见!

EN

回答 2

Stack Overflow用户

发布于 2011-12-09 11:13:07

使用某种语言(可能是您自己选择的)编写一个数据库模型,如果您愿意,可以使用一种特定于领域的语言。使用该模型生成您的PHP和您希望在MySQL中提供的任何中间模型或API.

模型可以包括诸如“实体”名称(不一定是表)、属性及其类型(数字、文本、枚举、引用)等内容。

MySQL已经是一个非常技术性的实现,它不太容易操作。特定于域的语言将极大地帮助数据建模和数据一致性,因为您可以免费获得如此多的内容。您可以自由使用MySQL提供的所有详细信息: CHAR、VARCHAR、TEXT、MEDIUMTEXT、LONGTEXT、BLOB。对于真正通用的应用程序,您不会想要考虑它。

更新:你想‘抽象你的逻辑’。您应该从抽象数据模型开始。有一个模型,您可以将其转换为将构建数据库的MySQL查询。您可以使用相同的模型在PHP中生成API。您的模型知道有哪些实体(表)以及哪些属性和哪种类型,因此您可以在PHP中强制执行它们。

票数 1
EN

Stack Overflow用户

发布于 2011-12-09 11:21:36

Google Appengine有一个查询语言,他们有一个很好的query class实现。也许你可以遵循类似的结构。

语法看起来像这样,

代码语言:javascript
复制
class Song(db.Model):
    title = db.StringProperty()
    composer = db.StringProperty()
    date = db.DateTimeProperty()

query = Song.all()
query.filter('title =', 'Imagine')

参考,AppEngine Query Class

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

https://stackoverflow.com/questions/8440563

复制
相关文章

相似问题

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