为什么CodeIginter的数据库操作要这么实现

jason09527 2014-05-13 12:21:14
为什么CodeIginter的数据库操作实现这么多select 、like、where、等各种链式操作方式的工具函数。

而不是让用户实现写原生S原生的SQL语句

这样做有什么好处?
...全文
629 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
cwk44 2014-05-13
  • 打赏
  • 举报
回复
接口统一了,之后换数据库的时候直接配置一下,调用不同的类文件数据库就换掉了。 就是说只要学一套规则就能操作不同的数据库,和pdo差不多。 还有就是可以在底层增加验证、防注入转换等的功能以保证安全。 直接写sql语句肯定要自己防注入吧。 (其实没去看CI底层,不知道有没有加防注入转换,但公司的框架底层有加这种功能)
xuzuning 2014-05-13
  • 打赏
  • 举报
回复
为什么要这样做? 这不好说,因为 php + mysql 并不能实现真正的 ORM 目前只有 java + oracle 可以实现 不过本着“人有我有”的意愿,所以也就模拟实现一个吧。赶赶时髦也不错 这样做有啥好处么? ORM 的好处在于他在应用程序和数据库之间搭建了一个接口,使得应用程序不需要了解数据是如何存储的
jason09527 2014-05-13
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。
能够更详细一些么?没大明白你的意思。这样做有啥好处么?为什么要这么做?
xuzuning 2014-05-13
  • 打赏
  • 举报
回复
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧