帝国CMS扩展SQL程序编写介绍,自定义SQL查询程序来增强系统功能
帝国CMS提供了灵活的SQL扩展机制,允许开发者编写自定义SQL查询程序来增强系统功能。以下是详细的介绍和示例。
基本范例:说明:下面例子都是以PHP文件放在系统根目录为基准。
例1:连接数据库程序。(a.php)
<?php
require('e/class/connect.php'); //引入数据库配置文件和公共函数文件
$link=db_connect(); //连接数据库
$empire=new mysqlquery(); //声明数据库操作类
db_close(); //关闭数据库链接
$empire=null; //注消操作类变量
?>
例2:操作数据表的程序。(b.php)
<?php
require('e/class/connect.php'); //引入数据库配置文件和公共函数文件
$link=db_connect(); //连接数据库
$empire=new mysqlquery(); //声明数据库操作类
$empire->query("update {$dbtbpre}ecms_news set onclick=onclick+1"); //给新闻表的点击数加1
db_close(); //关闭数据库链接
$empire=null; //注消操作类变量
?>
例3:读数据表的程序。(c.php)
<?php
require('e/class/connect.php'); //引入数据库配置文件和公共函数文件
$link=db_connect(); //连接数据库
$empire=new mysqlquery(); //声明数据库操作类
$sql=$empire->query("select * from {$dbtbpre}ecms_news order by newstime limit 10"); //查询新闻表最早10条记录
while($r=$empire->fetch($sql)) //循环获取查询记录
{
echo"标题:".$r['title']."<br>";
}
db_close(); //关闭数据库链接
$empire=null; //注消操作类变量
?>
例4:写数据表的程序。(d.php)
<?php
require('e/class/connect.php'); //引入数据库配置文件和公共函数文件
$link=db_connect(); //连接数据库
$empire=new mysqlquery(); //声明数据库操作类
$classname=dgdbe_rpstr($_POST['classname']);
$sql=$empire->query("insert into {$dbtbpre}enewsmenuclass(classname,issys,myorder,classtype,groupids) values('".$classname."','0','0','2','');");
if($sql)
{echo"写入成功";}
else
{echo"写入出错";}
db_close(); //关闭数据库链接
$empire=null; //注消操作类变量
?>
例5:更新数据表的程序。(e.php)
<?php
require('e/class/connect.php'); //引入数据库配置文件和公共函数文件
$link=db_connect(); //连接数据库
$empire=new mysqlquery(); //声明数据库操作类
$classid=(int)$_POST['classid'];
$classname=dgdbe_rpstr($_POST['classname']);
$sql=$empire->query("update {$dbtbpre}enewsmenuclass set classname='".$classname."' where classid='$classid'");
if($sql)
{echo"更新成功";}
else
{echo"更新出错";}
db_close(); //关闭数据库链接
$empire=null; //注消操作类变量
?>
例6:删除数据表的程序。(f.php)
<?php
require('e/class/connect.php'); //引入数据库配置文件和公共函数文件
$link=db_connect(); //连接数据库
$empire=new mysqlquery(); //声明数据库操作类
$classid=(int)$_GET['classid'];
$sql=$empire->query("delete from {$dbtbpre}enewsmenuclass where classid='".$classid."'");
if($sql)
{echo"删除成功";}
else
{echo"删除出错";}
db_close(); //关闭数据库链接
$empire=null; //注消操作类变量
?>
例7:查询数据表的程序。(g.php)
<?php
require('e/class/connect.php'); //引入数据库配置文件和公共函数文件
$link=db_connect(); //连接数据库
$empire=new mysqlquery(); //声明数据库操作类
$classname=RepPostVar($_POST['classname']);
$r=$empire->fetch1("select * from {$dbtbpre}enewsmenuclass where classname='".$classname."' limit 1");
echo"菜单分类ID:".$r['classid'];
db_close(); //关闭数据库链接
$empire=null; //注消操作类变量
?>
数据库操作类常用的函数说明:
1、执行SQL函数:
$empire->query("SQL语句");
$empire->query1("SQL语句");
说明:
执行成功返回true,执行不成功返回false ;
两者区别是:query()出错直接中断程序执行,query1()出错不中断程序执行。
使用范例:
$sql=$empire->query("select * from {$dbtbpre}ecms_news");
2、循环读取数据库记录函数:
$empire->fetch($sql)
说明:
$sql为query执行SQL返回的结果。
使用范例:
$sql=$empire->query("select * from {$dbtbpre}ecms_news");
while($r=$empire->fetch($sql))
{
echo"标题:".$r['title']."<br>";
}
3、读取单条数据库记录函数:(不循环)
$empire->fetch1("SQL语句")
使用范例:
$r=$empire->fetch1("select * from {$dbtbpre}ecms_news where id=1");
echo"标题:".$r['title'];
4、统计SQL查询记录数函数:
$empire->num("SQL语句")
$empire->num1($sql)
说明:
两者的区别是:num()直接写SQL语句,而num1()中的$sql为query执行SQL返回的结果。
使用范例:
$num=$empire->num("select id from {$dbtbpre}ecms_news");
echo"新闻表共有 ".$num." 条新闻";
5、统计SQL查询记录数函数2:(相对于num更高效的函数)
$empire->gettotal("统计SQL语句");
说明:
gettotal()和num()的区别是:gettotal()采用SQL本身的count(*)函数来统计,而num()是采用PHP本身的函数,gettotal()更高效一些。
gettotal()里的统计数一定要as total,如:“count(*) as total”。
使用范例:
$num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_news");
echo"新闻表共有 ".$num." 条新闻";
6、取得刚插入表的自增ID值函数:
$empire->lastid('数据表名','自增字段名')
说明:
mysql不需要指定参数,PostgreSQL则需要指定数据表名和自增字段名。
使用范例:
$empire->query("insert into {$dbtbpre}ecms_news(title) values('标题')");
$lastid=$empire->lastid();
echo"刚插入的信息ID为:".$lastid;
7、循环读取数据库记录函数2:(返回数组下标为字母)
$empire->fetch_zm($sql)
说明:
$sql为query执行SQL返回的结果。
使用范例:
$sql=$empire->query("select * from {$dbtbpre}ecms_news");
while($r=$empire->fetch_zm($sql))
{
echo"标题:".$r['title']."<br>";
}
8、读取单条数据库记录函数2:(不循环,返回数组下标为字母)
$empire->fetch1_zm("SQL语句")
使用范例:
$r=$empire->fetch1_zm("select * from {$dbtbpre}ecms_news where id=1");
echo"标题:".$r['title'];
9、循环读取数据库记录函数3:(返回数组下标为数字)
$empire->fetch_sz($sql)
说明:
$sql为query执行SQL返回的结果。
使用范例:
$sql=$empire->query("select title from {$dbtbpre}ecms_news");
while($r=$empire->fetch_sz($sql))
{
echo"标题:".$r[0]."<br>";
}
10、读取单条数据库记录函数3:(不循环,返回数组下标为数字)
$empire->fetch1_sz("SQL语句")
使用范例:
$r=$empire->fetch1_sz("select title from {$dbtbpre}ecms_news where id=1");
echo"标题:".$r[0];
11、移动SQL查询结果记录指针:
$empire->seek($sql,$pit)
说明:
$sql为query执行SQL返回的结果,$pit为指针的偏移数。
使用范例:
$sql=$empire->query("select * from {$dbtbpre}ecms_news");
$empire->seek($sql,2);
12、释放SQL查询结果函数:(一般不需要使用)
$empire->free($sql)
说明:
$sql为query执行SQL返回的结果。
使用范例:
$sql=$empire->query("select * from {$dbtbpre}ecms_news");
$empire->free($sql);






