作者MrMarcus (请勿忘记密码)
看板PHP
标题Re: [闲聊] Smarty + ADOdb 小心得
时间Wed Feb 7 12:57:44 2007
※ 引述《jsu (SSN 快快来~)》之铭言:
: ※ 引述《JoeHorn (狮子男)》之铭言:
: : 之前写过的文章,这边贴一份,有需要的可以参考看看。
: : ==============================================================================
: : Smarty 官方: http://smarty.php.net/
: : Smarty 入门: http://www.php5.idv.tw/documents/smarty/smarty20040209.htm
: : ADOdb 官方: http://adodb.sourceforge.net/
: : ADOdb 入门: http://linux.tnc.edu.tw/techdoc/adodb/book1.html
: : ADOdb 功能比较完整, 所以我把 ADOdb Lite 丢了.
: 其实我不是很理解为什麽要用 ADOdb 来玩资料库耶
: 会采用 Freetds 也是因为要让 php 跟 MSSQL server 沟通
: 一开始在编 php 的时候把 MySQL 弄进 Makefile 不就可以支援了吗?
: 然後自己写个 class 去负责资料库沟通
: 还是说在我编 php 的过程中它偷偷帮我做了一些事省了一些麻烦而我不知道?
: 难道是 ADOdb/Freetds ,这些东西可以增加程式的移植性?
: (我是真不懂没有不敬的意思)
adodb本来就是为了增加程式可移植性而诞生的产物啊。
php(在5.0版加入pdo之前)对於各种资料库的操作方式不统一,
针对mysql来写,程式里面用的都是mysql_xxx(),针对MS SQL Server来写,
程式里面都是mssql_xxx(),针对Oracle写,程式里面都是oci_xxx()....
不同的资料库有整套不同的函数来对应。如果没有一个所谓的资料库存取
抽象层(例如adodb)来把php对不同资料库有不同操作方式这个差异性包装
起来,那麽针对mysql写的程式几乎不可能移植到只能跑MS SQL Server的
环境上面去,程式只能选择一种资料库来支援。
有了资料库存取抽象层,更换资料库只需要在连线的时候指定不同的参数
即可,稍微想一下就可以改个config档的设定就整个换掉。
: : 目前在这两个搭配上面, 有另外一点要做考量.
: : 因为 Smarty 可以让我们把多组 SQL 抓出来的资料用 array 丢进去,
: : 然後用 foreach 做显示.
: : ( 也就是没限定你只能丢一组 array )
: : 而 ADOdb 的效能不高, 所以原本我们需要做 TABLE JOIN 时可以考虑这两种方式:
: : 1. 不做 JOIN , 直接 QUERY 多组资料,
: : 然後在 Smarty template 里面用 foreach 跟 if/else 将多组资料整合.
: : ( 效能瓶颈在 PHP & Smarty )
: 这种方式如果加入了 result sorting 的情况
: 应该在 statement 中加入 order by 会比较方便使用吧?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.154.199.81
1F:→ thitbbeb:那DB套件不也一样的意思?不同资料库只需改CONFIG档 02/07 19:58
2F:→ MrMarcus:yes.adodb本来就是惟珨〞榛b套件的一种 02/07 20:03
3F:→ MrMarcus:yes. adodb本来就是您所说的DB套件的一种。 02/07 20:05
4F:→ thitbbeb:恩恩~不过没用过adodb耶= =! 02/07 21:18
5F:推 KennyL:我满喜欢adodb里面的pivottable还有档案输出的功能,很好用! 02/08 00:31