mysql的操作

本文介绍了在Joomla!环境中进行数据库操作的方法,包括基于JFactory::getDBO()的查询、插入、删除操作,以及使用JTable进行数据库管理的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

$db=& JFactory::getDBO();   !!得到数据库源


$query='SELECT * FROM #__db';  !!提取目标sql语句
$db->setQuery($query);  !!执行
$result=$db->loadObjectList(); !!载入结果集
foreach($result as $row)
{
echo ' id is '.$row->id.' name is ' . $row->name .' comment is '.$row->comment.'<br />';
} !!动作

Joomla!中数据库操作主要分为两类,第一种是基于 JTable 的,第二种则是基于 JFactory::getDBO() 的。两者各有优缺点,看个人的喜好了。如果你不太懂SQL语句,那么JTable可能更加适合你,因为它的执行不需要你提供任何SQL语句(以下会介绍)。

下面开始正式操作了哦,首先在你的 Joomla! 根目录下的 components 文件夹下创建一个名为 com_db 的文件夹(这就是我们要创建的简单组件了),在其中创建名为 db.php 的文件,输入代码 <?echo "<h3>Hi,this is a testing component for database </h3>"?>

由于我在本地调试,所以 在浏览器中输入 http://localhost/joomla/index.php?option=com_db 可以看见输出文字,说明第一步已经搞定了。

在数据库中创建表 jos_db ,如果你安装了 phpMyAdmin 等工具,将更加方便.SQL语句如下

CREATE TABLE `jos_db` (

 

)

接着随便在其中插入几条记录以方便操作。

下面开始数据库操作。

一 基于getDbo

先从简单的查询讲起。

a)查询

$db=& JFactory::getDBO();


$query='SELECT * FROM #__db';
$db->setQuery($query);
$result=$db->loadObjectList();
foreach($result as $row)
{
echo ' id is '.$row->id.' name is ' . $row->name .' comment is '.$row->comment.'<br />';
}

你必须先通过 $db=& JFactory::getDBO(); 获得数据库操作对象,然后设置查询语句,接着通过 loadObjectList() 载入结果集。

当你的查询结果只有一个时,你也可以使用 loadResult()函数。

之所以使用#__的原因是,Joomla!会自动将其替换为你所设定的数据库前缀。

b)插入和删除

插入可以通过两种方法来,一种比较简单的做法如,你先将要插入的数据库对象复制,比如你要插入一条新的记录,赋值如下

$rowx->name="insert";
$rowx->comment="test insert";

这里由于设置了 id 为自动增长,所以你可以不给它值。

然后调用函数 $db->insertObject('#__db',&$rowx,'');插入。

另一种方法的原理和删除类似,都是调用了 Execute($querys) 这个方法。先来讲插入的。

我们给个插入的sql语句

$querys="INSERT INTO `joomla`.`#__db` (
`id` ,`name` ,`comment`)
VALUES (
NULL , 'execute', 'test execute'
); ";

然后调用函数,$db->Execute($querys); 即可。

同样的,删除记录你也可以执行相应的删除语句。此处略。

二 基于 JTable

下面将会讲述如何利用JTable来实现数据库操作,要使用 JTable 你必须在刚才创建的com_db目录下,新建一个名为 tables 的文件夹,在里面创建名为 jt.php的文件(文件名可以随意)。然后在里面插入如下代码。

<?php
defined('_JEXEC') or die();
class TableJt extends JTable{
var $id;
var $name ;
var $comment;


function __construct(&$db)
{
parent::__construct( '#__db', 'id', $db );
}
}

?>


其中类名必须以 Table+文件名组成,否则等下会提示找不到文件。在类里你必须常见数据库表中相同的字段变量。 如果有的字段默认值不为空,比如name默认为"a"的话,那么你的$name也应该给它赋值为 a 。构造函数中第一个参数代表所属的表名称。第二个则是下一步查询所需的关键字,比如等下你希望查询 id=1的记录,那么你最好将它设置为 id ,如果你要查询 name="yangqi"的记录,则将它设为 name。

好了,我们可以正常使用Jtable了,在刚才的db.php中继续增加代码。

先要包含该JTable类的文件 JTable::addIncludePath(JPATH_COMPONENT.DS.'tables');

然后获得一个实例 $row=& JTable::getINstance('jt','Table');

a)查询

查询一个 id 为 3的记录

$id=3;
$row->load($id);
echo $row->name;
echo $row->id;
echo $row->comment;

b)插入和删除

要插入一条记录,你先得给它赋值,比如我们赋值如:

$row->name="jtable";
$row->comment="using jtable";

然后调用store()函数 $row->store();

 

删除是搜索的反方法,通过 $row->delete($id); 实现。

`id` INT( 2 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 20 ) NOT NULL ,
`comment` VARCHAR( 20 ) NOT NULL
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值