多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[Xunsearch PHP-SDK](http://www.xunsearch.com) v1.4.8 API 参考文档 # XSDatabaseDataSource [All Packages](#)| [属性](#)| [方法(函数)](#) | 包 | [XS.util](#) | |-----|-----| | 继承关系 | class XSDatabaseDataSource »[XSDataSource](#) | | 版本 | 1.0.0 | | 源代码 | [sdk/php/util/XSDataSource.class.php](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php) | SQL 数据库源 ### Protected 属性 [隐去继承来的属性](#) | 名称 | 类型 | 描述 | 定义于 | |-----|-----|-----|-----| | [arg](#) | | | [XSDataSource](#) | | [inCli](#) | | | [XSDataSource](#) | | [type](#) | | | [XSDataSource](#) | ### Public 方法 [隐去继承来的方法](#) | 名称 | 描述 | 定义于 | |-----|-----|-----| | [__construct()](#) | 构造函数 | [XSDataSource](#) | | [getCharset()](#) | 返回数据库输出字符集 | XSDatabaseDataSource | | [getData()](#) | 从数据源中提取一条数据 | [XSDataSource](#) | | [instance()](#) | 取得数据源对象实例 | [XSDataSource](#) | ### Protected 方法 [隐去继承来的方法](#) | 名称 | 描述 | 定义于 | |-----|-----|-----| | [deinit()](#) | | XSDatabaseDataSource | | [getDataList()](#) | 返回一批数据 | XSDatabaseDataSource | | [init()](#) | | XSDatabaseDataSource | ### 方法明细 deinit()方法 <table class="summaryTable"><tr><td colspan="3"><div class="signature2">protected void <b>deinit</b>()</div></td></tr></table> **源码:**[sdk/php/util/XSDataSource.class.php#L211](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php#L211) (**[显示](#)**) `protected function deinit() {     $this->db->close(); }` getCharset()方法 <table class="summaryTable"><tr><td colspan="3"><div class="signature2">public mixed <b>getCharset</b>()</div></td></tr><tr><td class="paramNameCol">{return}</td> <td class="paramTypeCol">mixed</td> <td class="paramDescCol">如果数据库不支持 UTF-8 转换则返回 false</td></tr></table> **源码:**[sdk/php/util/XSDataSource.class.php#L138](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php#L138) (**[显示](#)**) `public function getCharset() {     if ($this->db->setUtf8()) {         return 'UTF-8';     }     return parent::getCharset(); }` 返回数据库输出字符集 getDataList()方法 <table class="summaryTable"><tr><td colspan="3"><div class="signature2">protected 结果数组, <b>getDataList</b>()</div></td></tr><tr><td class="paramNameCol">{return}</td> <td class="paramTypeCol">结果数组,</td> <td class="paramDescCol">没有更多数据时返回 false</td></tr></table> **源码:**[sdk/php/util/XSDataSource.class.php#L220](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php#L220) (**[显示](#)**) `protected function getDataList() {     if ($this->limit <= 0) {         return false;     }     $sql = $this->sql . ' LIMIT ' . min(self::PLIMIT, $this->limit) . ' OFFSET ' . $this->offset;     $this->limit -= self::PLIMIT;     $this->offset += self::PLIMIT;     return $this->db->query($sql); }` 返回一批数据 init()方法 <table class="summaryTable"><tr><td colspan="3"><div class="signature2">protected void <b>init</b>()</div></td></tr></table> **源码:**[sdk/php/util/XSDataSource.class.php#L146](https://github.com/hightman/xunsearch/blob/master/sdk/php/util/XSDataSource.class.php#L146) (**[显示](#)**) `protected function init() {     if (strstr($this->type, 'sqlite')) {         $pos = strpos($this->type, ':');         $param = array('scheme' => substr($this->type, 0, $pos));         $param['path'] = substr($this->type, $pos + (substr($this->type, $pos + 1, 2) === '//' ? 3 : 1));     } elseif (!($param = parse_url($this->type))) {         throw new XSException('Wrong format of DB connection parameter');     } else {         if (isset($param['user'])) {             $param['user'] = urldecode($param['user']);         }         if (isset($param['pass'])) {             $param['pass'] = urldecode($param['pass']);         }         $param['path'] = isset($param['path']) ? trim($param['path'], '/') : '';         if (empty($param['path'])) {             throw new XSException('Not contain dbname of DB connection parameter');         }         if (($pos = strpos($param['path'], '/')) === false) {             $param['dbname'] = $param['path'];         } else {             $param['dbname'] = substr($param['path'], 0, $pos);             $param['table'] = substr($param['path'], $pos + 1);         }     }     // get driver     $driver = self::getDriverName($param['scheme']);     $class = 'XSDatabase' . ucfirst($driver);     if (!class_exists($class)) {         throw new XSException("Undefined database driver: '$driver'");     }     $this->db = new $class;     $this->db->connect($param);     // set SQL & parse limit/offset     $this->limit = $this->offset = 0;     $sql = $this->arg;     if (empty($sql)) {         if (!isset($param['table'])) {             throw new XSException('Not specified any query SQL or db table');         }         $sql = 'SELECT * FROM ' . $param['table'];     } elseif (preg_match('/ limit\s+(\d+)(?:\s*,\s*(\d+)|\s+offset\s+(\d+))?\s*$/i', $sql, $match)) {         if (isset($match[3])) {  // LIMIT xxx OFFSET yyy             $this->offset = intval($match[3]);             $this->limit = intval($match[1]);         } elseif (isset($match[2])) { // LIMIT yyy, xxx             $this->offset = intval($match[1]);             $this->limit = intval($match[2]);         } else { // lIMIT xxx             $this->limit = intval($match[1]);         }         $sql = substr($sql, 0, strlen($sql) - strlen($match[0]));     }     $this->sql = $sql;     if ($this->limit == 0) {         $sql = preg_replace('/SELECT\s+.+?FROM\s/i', 'SELECT COUNT(*) AS count FROM ', $sql);         $res = $this->db->query1($sql);         $this->limit = $res['count'] - $this->offset;     } }` Copyright © 2008-2011 by [杭州云圣网络科技有限公司](http://www.xunsearch.com) All Rights Reserved.