介绍
介绍
福哥更新了TFPHP框架的TFDO数据库操作对象的insert、update、delete逻辑,优化了编译SQL语句的逻辑,执行速度会更快。同时福哥还重写了upsert方法的逻辑,改为先SELECT目标数据,再判断结果,有数据就UPDATE,没有数据就INSERT。
TFDO
这是TFPHP框架的数据库操作对象,名字空间是TFPHP\Database\SQL,基于PDO扩展实现。
insert
参数
| $table | string | 数据表名称 |
| $data | array | 插入数据表的数据,数组下标是字段名称,数组值是字段值 |
| $dataType | array | 插入数据表的数据的类型,默认情况下会根据$data数组值的类型判断。除此之外,还有一些高级的类似可以满足一些特殊的需求 |
返回值
返回值是一个bool类型的值,插入成功了就真,否则就是假。通常情况下,插入失败了就会触发异常,所以可以根据异常信息判断错误原因。
示例
插入一条记录导user表。
try {
$tfdo->insert("user", array(
'userName'=>"鬼谷子六姑爹"
));
var_dump($tfdo->getLastInsertID());
}
catch (Exception $e){
print_r($e->getMessage());
}
update
参数
| $table | string | 数据表名称 |
| $data | array | 更新数据表的数据,数组下标是字段名称,数组值是字段值 |
| $dataType | array | 更新数据表的数据的类型,默认情况下会根据$data数组值的类型判断。除此之外,还有一些高级的类似可以满足一些特殊的需求 |
| $where | string | 更新条件的部分SQL语句 |
| $whereData | array | 更新条件的数据,对应$where的“@xxx”变量 |
返回值
返回值是一个bool类型的值,更新成功了就真,否则就是假。通常情况下,更新失败了就会触发异常,所以可以根据异常信息判断错误原因。
示例
更新user表的信息。
try {
$tfdo->update("user",
array(
'userEmail'=>"ggz-lgd@tongfu.net"
), null,
"userId = @int",
array(
40
)
);
}
catch (Exception $e){
print_r($e->getMessage());
}delete
参数
| $table | string | 数据表名称 |
| $where | string | 删除条件的部分SQL语句 |
| $whereData | array | 删除条件的数据,对应$where的“@xxx”变量 |
返回值
返回值是一个bool类型的值,删除成功了就真,否则就是假。通常情况下,删除失败了就会触发异常,所以可以根据异常信息判断错误原因。
示例
删除user表的信息。
try {
$tfdo->delete("user", "userId = @int", array(
40
));
}
catch (Exception $e){
print_r($e->getMessage());
}upsert
参数
| $table | string | 数据表名称 |
| $data | array | 更新数据表的数据,数组下标是字段名称,数组值是字段值 |
| $dataType | array | 更新数据表的数据的类型,默认情况下会根据$data数组值的类型判断。除此之外,还有一些高级的类似可以满足一些特殊的需求 |
| $keyData | array | 更新数据表的条件的数据,数组下标是字段名称,数组值是字段值 |
| $keyDataType | array | 更新数据表的条件的数据的类型,默认情况下会根据$keyData数组值的类型判断。除此之外,还有一些高级的类似可以满足一些特殊的需求 |
返回值
返回值是一个bool类型的值,更新成功了就真,否则就是假。通常情况下,更新失败了就会触发异常,所以可以根据异常信息判断错误原因。
示例
创建一个user,使用upsert方法同步附属表user_profile,查询两个表的数据。
try {
$insertRet = $tfdo->insert("user", array(
'userName'=>"鬼谷子八大姑"
));
if($insertRet){
$newUserId = $tfdo->getLastInsertID();
if($newUserId > 0){
$tfdo->upsert("user_profile", array(
'nickName'=>"鬼谷子八大姑",
'birth'=>"2008-8-8"
), null,
array(
'userId'=>$newUserId
), null);
print_r($tfdo->fetchOne("select * from user where userId = @int", array($newUserId)));
print_r($tfdo->fetchOne("select * from user_profile where userId = @int", array($newUserId)));
}
}
}
catch (Exception $e){
print_r($e->getMessage());
}
总结
福哥今天分享了整理过的TFDO对象的代码,更新后的TFDO对象速度更快,稳定性更好~~