开源项目Joomla!数据库基础知识及开发应用

来源 :硅谷 | 被引量 : 0次 | 上传用户:mdjsh123
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]数据是Joomla!开发应用中重要的一环,可以说,网站终归是将数据有效的展示给用户,因而与数据库连接,有效的返回数据是Joomla!开发基础环节。
  [关键词]开源 Joomla! 数据库
  中图分类号:TP3 文献标识码:B 文章编号:1671-7597(2008)1220060-02
  
  一、引言
  
  Joomla!是一套获得过多个奖项的内容管理系统(Content Management System,CMS)。Joomla!采用PHP+MySQL数据库开发,可运行在Linux、Windows、MacOSX、Solaris等各种平台上。Joomla!除了具有新闻/文章管理,文档/图片管理,网站布局设置,模板/主题管理等一些基本功能之外。还可通过其提供的上千个插件进行功能扩展包括:电子商务与购物车引擎,论坛与聊天软件,日历,博客软件,目录分类管理,广告管理系统,电子报,数据收集与报表工具,期刊订阅服务等。
  Joomla是web程序,因此必须上传到服务器才能运行。如果要在自己的个人电脑(PC)上尝试Joomla,你必须在你的电脑上建立一个本地测试服务器。又由于Joomla使用php语言,因此你的服务器必须是php空间。Joomla的运行还离不开SQL数据库,因此你的服务器上必须拥有mysql。最能发挥其性能的是Linux+apache+php+MySQL平台。
  数据是Joomla!开发中重要的一环,可以说,网站终归是将数据有效的展示给用户,因而与数据库连接,有效的返回数据是Joomla!开发基础环节。
  
  二、Joomla!数据库相关类基础知识
  
  (一)JDatabase 类
  这是数据库connector类,封装了与数据库操作的一系列操作。目前有两个子类,JDatabaseMysql,JDatabaseMysqli,这个类为以后扩展到其他数据库留出了接口。
  关于一些具体函数基本对应mysql函数的一些特征,对于这个类应用基本都是首先setquery,然后load或者直接执行executequery,主要还是不要混淆load开头的几个函数的具体功能:
  1、loadObject 以对象的形式返回结果集的第一行数据。
  2、loadObjectList 对应上一个函数,返回一个对象的集合。
  3、loadResult 返回第一行的第一个字段或者NULL。
  4、loadResultArray 返回某一字段的数据到一个数组中。
  5、loadRow 返回第一行数据,应该是数组形式。
  6、loadRowList 对应上一个函数,返回行数据的集合。
  还有一个函数很重要就是setutf ,这个函数决定了数据库是否能正确的显示中文。
  (二)JTable类
  JTable 是数据库中数据表在程序中的表达,对应着表中的一行,以及相应的操作。Joomla中的JTable**对应中数据库中**表,在使用的时候要针对自己所使用的表扩展自己的Jtable。需要关注的是JTable的函数checkin,checkout ,这两个函数对更新的数据进行合法性检查。
  Jtable 比较常用的函数:delete,store,bind,load,setError等。
  
  三、Joomla!数据开发应用
  
  (一)组件开发中使用数据库
  1.使用JDatabase类
  Joomla!设计能使用几种数据库系统。JDatabase类自动创建数据库链接,仅要两行代码就可以从数据库返回不同格式的结果。采用Joomla数据库层确保了最大限度的灵活和兼容。
  2.数据库查询
  $db = JFactory::getDBO();// 获取数据库对象
  $query = "SELECT * FROM #__example_table WHERE id = 999999";
  $db->setQuery($query);
  首先我们初始化数据库对象,然后我们准备查询语句。可以使用通常的sql语法,唯一需要改变的是表前缀。为了使尽可能的灵活,Joomla为前缀采用了一个占位符 #__,接下来是setQuery()。
  如果不是为了从数据库返回信息,而是插入一行数据,就需要使用更多的函数。为了是sql语句符合sql语法,我们需要使用Quote,保证每一个value都由了引号包含。无论你想做什么,都需要setQuery()
  3.执行查询
  Joomla提供几个不同的函数,它们有不同的返回值。 基本查询函数:query、getAffectedRows、explain、insertid、insertObject
  4.返回结果集
  loadResult //返回第一行,第一个字段
  loadObject //返回第一行
  loadRow //返回数组,第一行
  loadResultArray、loadObjectList //返回多行row对象
  loadRowList //返回多维数组
  loadAssocList //散列数组
  (二)Joomla开发中连接外部数据库
  如果需要访问的数据不在Joomla使用的数据库中,怎样访问外部数据库?这个数据库可能是同一台机器上的不同数据库,或者根本就不在同一台服务器上,甚至可能不是mysql数据库而需要其他的数据库驱动。你可以通过JDatabase::getInstance方法而达到你的目的。下面是一个连接外部数据库的例子:
  <?php
  $option['driver']= 'mysql';// 数据库驱动
  $option['host'] = 'db.myhost.com';// 数据库所在的主机
  $option['user']= 'username'; // 用户
  $option['password'] = '*******'; // 密码
  $option['database'] = 'databasename'; // 数据库名字
  $option['prefix']= 'abc_'; // 数据库前缀(可以为空)
  $db = & JDatabase::getInstance( $option );
  ?>
  现在得到的$db是一个 JDatabase的实例,你可以执行通常的数据库操作。
  如果数据库用了一个非标准的端口,你可以通过在主机名添加来指定,例如,如果你的mysql数据库在3307端口运行,那么你这样指定 'db.myhost.com:3307'。这样做的一个好处是如果参数相同,再次调用JDat
  Abase::getInstance将得到前次已经生成的JDatabase的实例,而不是新生成一个。但是,参数必须完全相同。比如,如果你一次调用主机名是'db.my
  Host.com',而另一次调用是'db.myhost.com:3306',那么这时候将产生两个不同的JDatabase的实例,即使这两个主机实际上是相同的。
  
  四、Joomla!数据库表结构以及优化
  
  (一)Joomla数据库文章保存表jos_content
  jos_content可以说是Joomla数据库的核心表,数据字段的涉及范围够用了,但是仔细查看后,觉得有几点设计不够合理,这些问题将导致Joomla 采用mysql数据库将不能支撑大数据量的查询,也就是说,Joomla想要支撑大数据量,还有很长的路走,包括数据结构优化,查询语句优化,缓存设计优化。
  1、文章正文,文章简介与文章的其他的信心混合在一起,这将导致大数据量情况下,表将很大,对于查询性能是个拖累,这也是lifetype中将content表和content_text表分开的原因。
  2、文章点击也混合在一起,点击是一个频繁操作的动作,尤其对于myisa存储引擎,锁表将造成查询的性能大为下降,对于访问频繁的网站这是一个大的问题。
  3、created_by_alias未能有效利用。
  (二)Joomla数据库中几个重要的数据表
  1. 文章分类相关的两个表:
  jos_categories //子类
  jos_sections//类,
  两者之间是一对多关系,一个section可以有多个category。
  Joomla的组件,模块,插件的数据保存表 jos_components、jos_modules、jos_plugins。
  了解这几个表也很重要,比如可以在安装了某个插件并启用后,突然所有页面都不能访问了,这时候就可以进入数据库,更新刚安装插件的 publish字段为0 ,通常就可以恢复了。
  2. 文章保存数据表
  jos_content
  3. 用户,以及登录相关表
  jos_groups、jos_session、jos_users
  4. 菜单表
  jos_menu
  
  五、Joomla!数据库迁移,备份
  
  (一)Joomla 数据库如何转换字符集到utf-8
  原来的字符集为latin1,升级成为utf8的字符集。原来的表:old_tab
  le(default charset=latin1),新表: new_table(default charset=utf8)。
  第一步:导出旧数据
  mysqldump --default-character-set=latin1 -hlocalhost -uroot -B my_db --tables old_table > old.sql
  第二步:转换编码
  iconv -t utf-8 -f gb2312 -c old.sql > new.sql
  或者可以去掉 -f 参数,让iconv自动判断原来的字符集
  iconv -t utf-8 -c old.sql > new.sql
  第三步:导入
  修改old.sql,在插入/更新语句开始之前,增加一条sql语句: "SET NAMES utf8;",保存。
  mysql -hlocalhost -uroot my_db < new.sql
  (二)Joomla!数据库备份组件 Mysql Dumper
  SQL Dumper是备份MySQL数据库简单的解决办法,操作简单,高度安全。不管到底有多大的数据库你想导入或导出,都不存在困难。注:所有的文件都是保存在administrator/backups/文件夹。如果你想要恢复数据库,备份的sql文件也在这个目录。
  
  六、结束语
  
  Joomla!作为一个内容管理系统,利用它来建站和制作传统的静态网站不同,它大大降低了建站的难度,我们不需要太多的网站建设专业知识就可以快速的建立一个网站。并且后期网站的管理和维护也非常的方便。对于个人用户和中小型企业来说,一个网站具有内容管理、文章发布、用户注册、产品展示等功能就已足够,如果需要论坛、 留言板、相册等功能,可以从互联网下载相应的扩展程序在Joomla!安装并设置好就可以使用了。
  
  参考文献:
  [1]武欣、邵煜等译,《PHP和MySQL Web开发》(第三版) Luke Welling、Laura Thomson 著,机械工业出版社,2005.6.
  [2]刘振岩、王勇等,《基于Linux的Web程序设计》,人民邮电出版社,2008.2.
  [3]杜江,《PHP 5与MySQL 5 Web 开发技术详解》,电子工业出版社,2007.11.
  [4]秦涛等,《精通PHP5应用开发》,人民邮电出版社,2007.5.
  [5](奥)科夫勒著,杨晓云等译,《MySQL 5权威指南》(第3版),2006.12.
  
  作者简介:
  钱兆楼,男,汉,江苏沭阳,淮安信息职业技术学院计算机科学与工程系,硕士研究,中级,主要研究方向:计算机软件、网络。
其他文献
中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1220014-01    一、用USB接口捕获DV视频的背景    二十一世纪的今天,家庭用的DV机(数码摄像机)已经非常普及,一般的DV所使用的存贮介质是磁带,也有一些DV同时配有存贮卡,但这种存贮卡一般是留作存贮图片的(针对同时具有摄像和照相功能的DV),单纯用存贮卡作为视频存贮的DV机目前价格较高,大众接受及使用率
期刊
[摘要]以开发教学质量评估系统为背景,重点阐述关联规则中的Apriori算法在评估系统中的运用,并以实例说明。  [关键词]评估系统 Apriori算法 关联规则  中图分类号:TP3文献标识码:A 文章编号:1671-7597(2008)1220076-01    一、引言    高校教学质量评价系统的建立其目的不是简简单单地给教师一个评价等级,而是根据评价结果向教师传达重要的教学信息,帮助他们
期刊
[摘要]基于ASP.NET平台的网站和应用越来越广泛,用户对网站的访问速度的要求也越来越高。网站的访问速度取决于很多因素,主要从网站的系统架构和性能优化两方面入手,结合实际经验,提出一些最佳技术实践和解决方案。  [关键词]ASP.NET 网站架构 性能优化  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1220069-01    随着互联网的发展,新技术层出不穷,
期刊
[摘要]虚拟用户交换机(Centrex)拥有用户专用交换机(PBX)的部分功能,在小型公司、企业、酒店、宾馆得到了广泛的应用,从中大型星级酒店的通信需求和通信安全出发,从四大方面描述Centren与PBX星级酒店组网时各自的优劣之处,以期达到了解两者适用条件的目的。  [关键词]Centrex PBX 星级酒店  中图分类号:TN91 文献标识码:A 文章编号:1671-7597(2008)122
期刊
[摘要]绩效考评系统根据银行历史情况,根据一定的标准,为相决策者在做出某种决策时提供决策分析,变“事后控制”为事前控制。对商业银行绩效考评系统应该解决的问题以及所应遵循的设计原则进行分析,并对该系统进行设计。  [关键词]绩效考评 设计 功能模块  中图分类号:F83 文献标识码:A 文章编号:1671-7597(2008)1220119-02    目前,中国存在许多家银行,银行间竞争激烈。银行
期刊
[摘要]根据对我国农村建筑物样本的调查结果,总结农村房屋的抗震特征,分析建筑物的建造年代、结构类型、抗震处理。提出提高农村房屋抗震能力的对策和建议。  [关键词]农村房屋 抗震特征 抗震对策  中图分类号:P5 文献标识码:A 文章编号:1671-7597(2008)1220089-02    一、前言    2008年5月12日14时28分,在四川汶川县发生M8.0级地震,造成69181人遇难,
期刊
[摘要]H.264是目前最新的视频编解码标准,研究运动估计基本原理和研究状况的基础上,对X264编码器的三种运动估计算法进行分析和比较,实验结果表明可以在保证图像质量的情况下,提高编码速度,有效压缩视频。  [关键词]H.264 视频编码 运动估计 X264  中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1220108-01    一、运动估计基本原理和研究现状  
期刊
[摘要]提出多媒体教学软件的框架模型,论述基于Authorware的多媒体教学软件的设计过程。并以EC实例给出教学系统结构、教学内容文件网络结构、软件详细设计及教学测试系统框架、功能。  [关键词]CAI Authoware技术 多媒体 软件设计  中图分类号:TP3文献标识码:A 文章编号:1671-7597(2008)1210069-02067-02    一、引言    随着计算机技术的飞速
期刊
[摘要]论述淬火炉上料机械手动作流程及其液压系统工作原理,结合机械手动作流程,设计PLC控制系统的输入输出图和自动程序控制梯形图。  [关键词]淬火炉上料机械手 液压系统 PLC控制系统  中图分类号:TP2 文献标识码:A 文章编号:1671-7597(2008)1220116-02    一、引言    机械手是模仿人的手部动作,按给定程序、轨迹、和要求实现自动抓取、搬运和操作的自动装置,实现
期刊
[摘要]随着第三代监控系统的成熟,利用视频流技术的实时远程视频监控系统也应运而生。直接使用解压缩算法支持实时播放通用性和移植性差。  [关键词]DirectShow 远程监控 MPEG-4 过滤器   中图分类号:TP3 文献标识码:A 文章编号:1671-7597(2008)1220123-02    一、引言    数字视频压缩编码技术日益成熟,多媒体计算机性能不断提高,网络带宽逐步增大,以网
期刊