企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## PDO操作类MyPdo DbModel使用MyPdo类来连接和操作数据库。 MyPdo类并不是直接面向应用层开发用户的,它只是供DbModel操作数据库的一个类库。 应用层开发用户可不必理会此文档。 #### 重构了MyPdo类,相对于之前使用的MyPdo类,进行了下列改变: * 实例被创建时即连接数据库,而非执行查询时连接。 * 优化了参数化查询的参数绑定方法,弃用命名参数绑定,改用顺序绑定。此改变为DbModel实现完全的参数化查询提供了基础。 * DbModel应为每一个数据库连接创建一个唯一的MyPdo实例,由DbModel自行维护此单例。此改变为DbModel连接多库提供基础。 * 不再维护$PDOStatement类实例变量。 * 区分更新性的SQL命令(exec)和查询性的SQL命令的执行方法(query)。 * * * * * #### 创建实例 ~~~ MyPdo::__construct($dbConfig, $persistent = false) ~~~ 使用new关键字来创建一个MyPdo类实例 参数表: | 参数名称 | 必选 | 类型 | 说明 | | --- | --- | --- | --- | | dbConfig | 是 | array | 数据库连接信息 | | persistent | 否 | boolean | 是否持久连接 | 用例: ~~~ $dbConfig = [ 'driver' =>'mysql', 'host' =>'localhost', 'port' =>'3306', 'user' =>'root', 'passwd' =>'', 'dbname' =>'crm', 'charset' =>'utf8' ]; //是否持久连接 $persistent = false; $myPdo = new MyPdo($dbConfig); ~~~ 实例创建时即连接数据库。如连接数据库失败,会抛出相应的PDOException异常。 * * * * * #### 执行更新性的SQL语句 ~~~ MyPdo::exec($sql, $params = []) ~~~ 用于执行诸如insert, update, delete, replace等更新性的SQL语句,返回影响的行数。 参数表: | 参数名称 | 必选 | 类型 | 说明 | | --- | --- | --- | --- | | sql | 是 | string | 要执行的SQL语句,包含参数绑定的占位符“?” | | params | 否 | array | 参数绑定的值列表 | 用例: ~~~ $sql = 'UPDATE `employees` SET `name` = ?, `email` = ?, `age` = ? WHERE id = ?'; $params = ['张三', '888@qq.com', 29, 2]; //返回影响的行数 $rowsAffected = $myPdo->exec($sql, $params); ~~~ 参数绑定的占位符使用“?”,要绑定的参数放在$params数组里,按顺序一一对应。 * * * * * #### 执行查询性的SQL语句 ~~~ MyPdo::query($sql, $params = []) ~~~ 执行select等查询性的SQL语句,并返回数据集 参数表: | 参数名称 | 必选 | 类型 | 说明 | | --- | --- | --- | --- | | sql | 是 | string | 要执行的SQL语句,包含参数绑定的占位符“?” | | params | 否 | array | 参数绑定的值列表 | 用例: ~~~ $sql = 'SELECT * FROM `employees` WHERE `department_id` = ? AND `age` > ? AND `sex` = ?'; $params = [2, 30, '男']; $rows = $myPdo->query($sql, $params); ~~~ 参数绑定的占位符使用“?”,要绑定的参数放在$params数组里,按顺序一一对应。 #### 获取多行数据 ~~~ MyPdo::getRows($sql, $params = [], $primkey = false) ~~~ 获取多行数据的封装 参数表: | 参数名称 | 必选 | 类型 | 说明 | | --- | --- | --- | --- | | sql | 是 | string | 要执行的SQL语句,包含参数绑定的占位符“?” | | params | 否 | array | 参数绑定的值列表 | | primkey | 否 | boolean | 是否返回以主键为下标的二维数组 | 用例: ~~~ $sql = 'SELECT * FROM `employees` WHERE `department_id` = ? AND `age` > ? AND `sex` = ?'; $params = [2, 30, '男']; $rows = $myPdo->getRows($sql, $params, true); ~~~ * * * * * #### 获取一行数据 ~~~ MyPdo::getRow($sql, $params = []) ~~~ 获取一行数据的封装 参数表: | 参数名称 | 必选 | 类型 | 说明 | | --- | --- | --- | --- | | sql | 是 | string | 要执行的SQL语句,包含参数绑定的占位符“?” | | params | 否 | array | 参数绑定的值列表 | 用例: ~~~ $sql = 'SELECT * FROM `employees` WHERE id = ?'; $params = [12]; $row = $myPdo->getRow($sql, $params); ~~~ * * * * * #### 获取一个值 ~~~ MyPdo::getOne($sql, $params = []) ~~~ 获取一个值的封装 参数表: | 参数名称 | 必选 | 类型 | 说明 | | --- | --- | --- | --- | | sql | 是 | string | 要执行的SQL语句,包含参数绑定的占位符“?” | | params | 否 | array | 参数绑定的值列表 | 用例: ~~~ $sql = 'SELECT `name` FROM `employees` WHERE id = ?'; $params = [12]; $hisName = $myPdo->getOne($sql, $params); ~~~ * * * * * #### 获取最后执行的SQL语句 ~~~ MyPdo::getLastSql() ~~~ 获取最后执行的SQL语句 用例: ~~~ $sql = $myPdo->getLastSql(); ~~~ * * * * * #### 获取最后插入行的主键id ~~~ MyPdo::lastInsertId() ~~~ 获取最后插入行的主键id 用例: ~~~ $id = $myPdo->lastInsertId(); ~~~ * * * * * #### 开启事务 ~~~ MyPdo::beginTransaction() ~~~ 开启事务 用例: ~~~ $myPdo->beginTransaction(); ~~~ * * * * * #### 回滚事务 ~~~ MyPdo::rollBack() ~~~ 开启事务 用例: ~~~ $myPdo->rollBack(); ~~~ * * * * * #### 提交事务 ~~~ MyPdo::commit() ~~~ 开启事务 用例: ~~~ $myPdo->commit(); ~~~ * * * * * #### 关闭连接 ~~~ MyPdo::close() ~~~ 关闭连接 用例: ~~~ $myPdo->close(); ~~~