[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.
- 权威指南
- 新手上路
- 最新主要变动
- 概述
- 关于 Xunsearch PHP-SDK
- 安装、升级
- 体验 demo 项目
- 开发规范
- 开发流程
- 了解基础对象
- 基础对象概述
- XS 项目
- XSException 异常
- XSDocument 文档
- XSIndex 索引管理
- XSSearch 搜索
- XSTokenizer 分词接口
- 编写项目配置文件
- 项目配置详解
- 自定义分词器
- 编写第一个配置文件
- 管理索引
- 索引概述
- 添加文档
- 更新、修改文档
- 删除文档
- 清空索引
- 平滑重建索引
- 使用索引缓冲区
- 自定义SCWS词库
- 使用搜索
- 搜索概述
- 构建搜索语句
- 获取搜索匹配结果
- 获取搜索匹配数量
- 获取热门搜索词
- 获取相关搜索词
- 搜索建议和纠错
- 按字段值分面搜索
- 使用辅助工具
- RequiredCheck 运行检测
- Indexer 索引管理器
- Quest 搜索测试工具
- SearchSkel 生成搜索代码
- IniWizzard 配置文件向导
- Logger 搜索日志管理
- 专题
- 同义词搜索功能
- 在SDK中使用SCWS分词
- API 指南
- XS
- XS
- XSCommand
- XSComponent
- XSDocument
- XSErrorException
- XSException
- XSFieldMeta
- XSFieldScheme
- XSIndex
- XSSearch
- XSServer
- XS.tokenizer
- XSTokenizer
- XSTokenizerFull
- XSTokenizerNone
- XSTokenizerScws
- XSTokenizerSplit
- XSTokenizerXlen
- XSTokenizerXstep
- XS.util
- XSCsvDataSource
- XSDataFilter
- XSDatabaseDataSource
- XSDebugFilter
- XSJsonDataSource
- XSUtil
- XS.util.db
- XSDatabase
- XSDatabaseMySQL
- XSDatabaseMySQLI
- XSDatabasePDO
- XSDatabasePDO_MySQL
- XSDatabasePDO_PgSQL
- XSDatabasePDO_SQLite
- XSDatabasePgSQL
- XSDatabaseSQLite
- XSDatabaseSQLite3
- XS.utilf
- XSDataSource
- 其它文档
- 关于 xunsearch
- 特色和优势
- Xunsearch 架构简图
- 下载 Xunsearch
- 商业服务与支持
- XunSearch 授权许可证