同福

【对象】adodb使用教程

介绍

介绍

对象 adodb 是 TFAPI 框架用来操作各种数据库引擎的驱动对象

通过 adodb 可以简单地进行数据库的各种方式的数据存取操作

定义

导入

tf_restful_client 对象在 db.adodb 位置

linking('db.adodb')

属性

others

修饰:public
说明:捆绑的其他数据源对象实例集合。我们可以在一个项目里建立多个数据源,然后捆绑到一个 adodb 对象实例上面,方便在项目里操作。

parent

修饰:public

说明:被捆绑的数据源对象实例。如果当前 adodb 对象实例是一个被其他数据源捆绑的其他数据源,可以通过 parent 找到父级数据源。

fatalException

修饰:public

说明:控制当执行sql出现错误的时候,是否打印错误信息并终止代码执行。默认值为 false。

方法

__construct($myConnStr)

参数

  • $myConnStr:数据源连接字符串

set_master($master)

介绍
通过这个方法可以绑定一个其他数据源作为“主”数据源,当我们执行“读”操作的时候会使用当前数据源,当我们执行“写”操作的时候会使用这个“主”数据源来完成

参数

  • $master:“主数据源”

set_others($others)


介绍
通过这个方法可以绑定一组其他数据源到当前数据源实例上面,可以通过 $dbObj->others["xxx"] 方式访问这里面的数据源实例

参数

  • $others:其他数据源数组

enable_query_log($enable, $logPath = null, $moreThanTime = 0)

介绍
控制query日志,可以将执行时间超过一定描述的query的sql记录到文件里面

参数

  • $enable:控制开关

  • $logPath:日志保存完整路径

  • $moreThanTime:超时query的秒数

get_querys()

介绍
获取历史执行过的sql的数组

get_querys_all()

介绍
获取历史执行过的sql的数组(含others里面的数据源)

get_query_count()

介绍

获取历史执行过的sql的数量

get_querys_explain()

介绍

获取历史执行过的sql的数组(含explain信息)

get_errors()

介绍

获取历史执行过的sql的错误信息

cvt_sql_vars($sql, $vars)

cvt_str_value($str, $forWhere = false)

server_msg()

use_db($db)

介绍

切换当前操作数据库

set_charset($charset)

介绍

设置当前操作编码

last_insert_id()

介绍

获取最后一次含有自增列数据表的插入操作后自动产生的自增列的值

begin_transaction()

介绍

开始事务

end_transaction($commitSql = true)

介绍

完成事务

参数

  • $commitSql:为真则提交事务,为假则执行回滚

execute($sql, $opts = null)

介绍

执行写操作,包括 CEATE/DROP/ALTER/DELETE 等

参数

  • $sql:操作sql语句

  • $opts:选项

effected_rows()

介绍

获取最后一次操作影响的数据行数量

free_result()

procedure($sql, $withFieldNames = true)

table($sql)

介绍

获取全部数据结果,保存到二维数组里面,字段名称作为数组的键名

参数

  • $sql:查询sql语句

table_recursive($sql, $partWidth)

to_array($sql)

介绍

获取全部数据结果,将结果集的第一字段作为数组的键,第二字段作为数组的值,拼接成为一个一维数组

参数

  • $sql:查询sql语句

to_list($sql, $separator = ",")

介绍

获取全部数据结果,将结果集的第一字符通过 $seperator 参数拼接成一个字符串

参数

  • $sql:查询sql语句

  • $separator:拼接字符串

row($sql)

介绍

获取第一行数据结果,保存到一维数组里,字段名称作为数组的键名

参数

  • $sql:查询sql语句

part($sql, $s, $l)

介绍

从 $s 位置开始读取 $l 行数据,保存到二维数组里面,字段名称作为数组的键名

参数

  • $sql:查询sql语句

  • $s:start position

  • $l:read length

scalar($sql)

介绍

获取第一行数据结果,返回第一个字段的值

参数

  • $sql:查询sql语句

get_total($sql)

介绍

返回结果集的行数量

参数

  • $sql:查询sql语句

sql_total($sql)

get_join_tables($majorSql, $joinTableSqlArr, $readLength, $startPosition = 0)

get_join_tables_by_major_datas($datas, $joinTableSqlArr, $readLength, $startPosition = 0)

insert_builder($table, $insertDataArr)

介绍

创建 INSERT 的 sql 语句

参数

  • $table:插入数据表名称

  • $insertDataArr:插入数据数组

update_builder($table, $updateDataArr, $whereCondStr)

介绍

创建 UPDATE 的 sql 语句

参数

  • $table:更新数据表名称

  • $updateDataArr:更新数据数组

  • $whereCondStr:更新sql语句的 WHERE 部分

安全模式

介绍

对象内建了一组方法执行数据的读写操作时候可以避免SQL注入攻击

方法

st($sql, ...)

介绍

等效 table($sql)

sta($sql, ...)

介绍

等效 to_array($sql)

stl($sql, $separator = ",", ...)

介绍

等效 to_list($sql, $separator)

sr($sql, ...)

介绍

等效 row($sql)

ss($sql, ...)

介绍

等效 scalar($sql)

se($sql, ...)

介绍

等效 execute($sql)

ib($sql, $insertDataArr)

介绍

等效 insert_builder($sql, $insertDataArr)

ub($sql, $updateDataArr, $whereCondStr)

介绍

等效 update_builder($sql, $updateDataArr, $whereCondStr);

使用

示例

查询全部文章分类信息

st、table的应用

$categories = $this->dbObj->st("select * from category 
                    where categType = @int", Category::T_CATEG_ARTICLE);

查询全部文章分类放入数组

sta、to_array的应用

$categories = $this->dbObj->sta("select categId, categName from category 
                    where categType = @int", Category::T_CATEG_ARTICLE);

查询一组用户的用户ID

stl、to_list的应用

$userIDList = $this->dbObj->stl("select userId from user 
                    where regDT between @str and @str", date("Y-m-d 00:00:00"), date("Y-m-d 23:59:59"));

查询一个用户的信息

sr、row的应用

$userInfo = $this->dbObj->sr("select * from user 
                    where userId = @int", 35);

查询一个用户的用户名

ss、scalar的应用

$userName = $this->dbObj->ss("select userName from user 
                    where userId = @int", 35);

插入一行数据

ib、insert_builder的应用

$iSql = $this->dbObj->ib("user", array(
                     'userName'=>"张三",
                     'userPass'=>md5("123456"),
                     'regDT'=>date("Y-m-d H:i:s")
                     ));
$this->dbObj->se($iSql);

更新一行数据

ub、update_builder的应用

$uSql = $this->dbObj->ub("user", array(
                     'logDT'=>date("Y-m-d H:i:s")
                     ), "userId = @int", 35);
$this->dbObj->se($uSql);

删除一行数据

se、execute的应用

$this->dbObj->se("delete from user where userId = @int", 35);