帝国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);