同福

TFPHP框架的TFDO对象的使用【20210615】

介绍

介绍

福哥更新了TFPHP框架的TFDO数据库操作对象的insert、update、delete逻辑,优化了编译SQL语句的逻辑,执行速度会更快。同时福哥还重写了upsert方法的逻辑,改为先SELECT目标数据,再判断结果,有数据就UPDATE,没有数据就INSERT。

TFDO

这是TFPHP框架的数据库操作对象,名字空间是TFPHP\Database\SQL,基于PDO扩展实现。

insert

参数

$table
string数据表名称
$dataarray插入数据表的数据,数组下标是字段名称,数组值是字段值
$dataTypearray插入数据表的数据的类型,默认情况下会根据$data数组值的类型判断。除此之外,还有一些高级的类似可以满足一些特殊的需求

返回值

返回值是一个bool类型的值,插入成功了就真,否则就是假。通常情况下,插入失败了就会触发异常,所以可以根据异常信息判断错误原因。

示例

插入一条记录导user表。

try {
    $tfdo->insert("user", array(
        'userName'=>"鬼谷子六姑爹"
    ));
    var_dump($tfdo->getLastInsertID());
}
catch (Exception $e){
    print_r($e->getMessage());
}

home/topic/2021/0616/11/c98f8868d66385ea3d814c3f5b41e8b4.png

update

参数

$tablestring数据表名称
$data
array更新数据表的数据,数组下标是字段名称,数组值是字段值
$dataTypearray更新数据表的数据的类型,默认情况下会根据$data数组值的类型判断。除此之外,还有一些高级的类似可以满足一些特殊的需求
$wherestring更新条件的部分SQL语句
$whereDataarray更新条件的数据,对应$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

参数

$tablestring数据表名称
$wherestring删除条件的部分SQL语句
$whereDataarray删除条件的数据,对应$where的“@xxx”变量

返回值

返回值是一个bool类型的值,删除成功了就真,否则就是假。通常情况下,删除失败了就会触发异常,所以可以根据异常信息判断错误原因。

示例

删除user表的信息。

try {
    $tfdo->delete("user", "userId = @int", array(
        40
    ));
}
catch (Exception $e){
    print_r($e->getMessage());
}

upsert

参数

$tablestring数据表名称
$dataarray更新数据表的数据,数组下标是字段名称,数组值是字段值
$dataTypearray更新数据表的数据的类型,默认情况下会根据$data数组值的类型判断。除此之外,还有一些高级的类似可以满足一些特殊的需求
$keyDataarray更新数据表的条件的数据,数组下标是字段名称,数组值是字段值
$keyDataTypearray更新数据表的条件的数据的类型,默认情况下会根据$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());
}

home/topic/2021/0616/11/7913007558cfecf3553d36ce81dda77f.png

总结

福哥今天分享了整理过的TFDO对象的代码,更新后的TFDO对象速度更快,稳定性更好~~