操作织梦数据库表函数大全

admin2019-12-25911

在数据库类这个文件里面织梦官方封装了一些常用的查询数据库表记录的函数,这些函数其实非常简单的,只所以,说它简单是因为,这些封装的函数代码都比较简单,而且,有的只是为把名字改了一下,所以,今天一起把这些函数总结一下,以备后用。

我们知道当我们连接好数据库服务器、选择好数据库,设置好编码好后,就要开始把查出来的资源进行遍历操作了,遍历操作用到的mysql数据库操作函数就是今天课程要讲的,织梦数据库类给我们提供了多个操作函数,我们一一进行分析。

这些函数所在位置:www.dedebase.com/include/dedesql.class.php

第一个函数:GetArray($id="me",$acctype=MYSQL_ASSOC),

在这个函数里面就一个条件判断 if($this->result[$id]==0),请注意,这个里面的$this->result[$id]是实例化后,调用类似Excute()函数时,建立的一个连接资源。若这

个存放,说明查询sql语句成功,成功后,就要用mysql_fecth_array()函数取出来。mysql_fecth_array()这个函数才是GetArray($id="me",$acctype=MYSQL_ASSOC)里面最核心的。

这个函数的功能是:返回当前的一条记录并把游标移向下一记录

这个函数的完整代码是:

   function GetArray($id="me",$acctype=MYSQL_ASSOC)
    {
        if($this->result[$id]==0)
        {
            return FALSE;
        }
        else
        {
            return mysql_fetch_array($this->result[$id],$acctype);
        }
    }

通过这个函数我们知道,其实,织梦系统已经封的函数都是php系统里面的,而且,只是把这些函数溶入了织梦系统里面罢了。由此,我们知道,如果我们自己封装函数的话,也可以按照此方法来封装自己的函数。

第二个函数:GetObject($id="me") 

这个函数返回的是一个对象,把返回的一行记录作为一个对象,这样调用的时候就方便了,当然,这个函数的核心还是php系统函数mysql_fetch_object($this->result[$id])。

函数功能:把返回的一条记录作为一个对象。

函数完整代码:

function GetObject($id="me")
    {
    if($this->result[$id]==0)
    {
         return FALSE;
    }
        else
    {
        return mysql_fetch_object($this->result[$id]);
    }
}

通过上面二个函数,我们知道了函数的封装其实,也非常简单啊。如果我们封装其它函数可以以照着这种方法来封。

第三个函数:IsTable($tbname)

功能:检测是否存在某数据表

返回值:bool型值,是一个表则返回true,否则返回false

函数用到的php函数为:mysql_num_rows — 取得结果集中行的数目;mysql_query()执行sql语句;以及SHOW TABLES LIKE“表名”sql语句。

第四个函数:GetVersion($isformat=TRUE)

获得MySql的版本号

第五个函数:GetTableFields($tbname,$id="me")

列出表的信息,看这个函数里面的mysql_list_fields(数据库名,表名,linkID)

第六个函数:GetFieldObject($id="me") 

返回表中字段的详细信息,要研究这个函数,请研究php 系统函数mysql_fetch_field($this->result[$id]),它返回的是一个对象。

我们举例子说明:

<?php

require_once("./include/common.inc.php");
$sql="select * from dede_archives limit 0,7";

$dsql->Execute('me',$sql);

$object=$dsql->GetFieldObject('me');

var_dump($object);

?>

显示的结果是:

object(stdClass)#2 (13) {
  ["name"]=>
  string(2) "id"
  ["table"]=>
  string(13) "dede_archives"
  ["def"]=>
  string(0) ""
  ["max_length"]=>
  int(1)
  ["not_null"]=>
  int(1)
  ["primary_key"]=>
  int(1)
  ["multiple_key"]=>
  int(0)
  ["unique_key"]=>
  int(0)
  ["numeric"]=>
  int(1)
  ["blob"]=>
  int(0)
  ["type"]=>
  string(3) "int"
  ["unsigned"]=>
  int(1)
  ["zerofill"]=>
  int(0)
}

从显示的结果我们可以看出,$object是一个对象,我们可以直接用$object->name来调用id,用$object->table来调用表等,以及表中的相关信息,这个对于打印出来一个表格显示在浏览上面非常有帮助。我们经常看到一些网站上面有很多的table组成的表格,完全可以用这个函数来实现,但是,这个不常用。

第七个函数:GetTotalRow($id="me") 

获得查询的总记录数,这个函数比较有用,就像函数count()函数类似。

第八个函数:GetLastID() 

获取上一步INSERT操作产生的ID 这个也很有用,在织梦二次开发中这个常常用到。这个函数的底层函数是mysql_insert_id(),但是这个php 函数有一个问题是:如果 AUTO_INCREMENT 的列的类型是 BIGINT,则 mysql_insert_id() 返回的值将不正确。

解决方法:可以在 SQL 查询中用 MySQL 内部的 SQL 函数 LAST_INSERT_ID() 来替代。

$rs = mysql_query("Select LAST_INSERT_ID() as lid",$this->linkID);
$row = mysql_fetch_array($rs);
return $row["lid"];

这样就可以解决mysql_insert_id()这个函数的一个小小问题,毕竟这个函数是php函数而不是mysql内部函数,在一些培训讲座里面,好像也没有提到过这个问题,对于我们二次开发人员来说,这点一定注意,要不出了问题可能都不知道是哪里出问题了。

以上的操作数据库表的函数,就是织梦数据库类里面的操作数据库表的所有函数了,其中,最后前二个和最后二个函数非常重点,其它几个函数就相对来说比较简单其实,这些封装的函数代码都比较简单,这个教程也没有把全部的代码列出来,如果想看完整代码请打开dedesql.class.php文件对照研究即可。

如果实在不愿意看,只要会调用即可,其它,不用研究深了,当然,如果您对这里面的每个函数都细细研究一下,收获非常大的而对我们做二次开发人员来说,也是比较有帮助,只有看的代码多了写的代码多了,开发起来才更能得心应手。


网友评论