前言
WorkInfo类要干的事比我想的还要多,所以先更新相对简单的DBUtils类了,DBUtils类是整个项目处理数据库操作的一个工具类,需要访问、操作数据库时只需要传入SQL语句等参数即可,避免了每次访问数据库都需要重复的写创建pdo对象和获取结果的代码。
设计
DBUtils类是用来连接和访问数据库的工具类,主要的功能是:
创建pdo对象
查询数据库并返回结果
因此DBUtils会有一个成员变量和三个基本方法:
- $pdo 存放pdo对象
- __construct 实例化时构造pdo对象
- myQuery 自定义的查询方法
- myExecute 自定义的执行方法
Coding
先看构造方法:
/**
* DBUtils constructor.
* @param string $dbHost
* @param string $dbUsername
* @param string $dbPassword
*/
function __construct($dbHost="yeek.top", $dbUsername="moreant", $dbPassword="moreant")
{
$dsn = "mysql:host=$dbHost;dbname=yeek;charset=utf8";
try {
$pdo = new PDO($dsn, $dbUsername, $dbPassword);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
exit("连接出错" . $e->getMessage());
}
$this->pdo = $pdo;
}
传入的三个参数主要都是用来实例化PDO类,我都指定了默认值,作用如下:
- new PDO() 返回的是yeek.top中morean用户的PDO对象
- new PDO(“localhost”) 返回的是localhost中morean用户的PDO对象
- new PDO(“localhost”,“root”,“password”) 返回的是localhost中root用户的PDO对象
自定义查询方法:
/**
* 自定义(方便的)查询方法
* @param $sql string 查询语句
* @param null $array 传入参数
* @param bool $all 获取最后一个结果还是所有结果
* @return array|null 成功返回数组,失败返回null
*/
function myQuery($sql, $array=null, $all=true)
{
$pdo = $this->pdo;
$pdoS = $pdo->prepare($sql);
$execute = $pdoS->execute($array);
if($execute){
if($all){
return $pdoS->fetchAll();
}else{
return $pdoS->fetch();
}
}else{
echo "查询失败";
}
return null;
}
查询方法用的是PDOStatement的prepare+execute方法,好处就是可以绑定SQL语句中的参数,在execute方法中传入绑定参数的数组即可
未来可能只需要返回查询结果中的第一个,所以加入了if来判断。
最后是myExecute方法
function myExecute($sql, $array=null){
$pdo = $this->pdo;
$pdoS = $pdo->prepare($sql);
$execute = $pdoS->execute($array);
if($execute){
return $pdoS->rowCount();
}else{
echo "查询失败";
}
return null;
}
因为在处理Update、Insert、Delect中execute的到的结果并不是数组(fetch结果为空)只能用rowCount来得到影响的行数。
调用例子
$dp = new DButils();
$sql = "SELECT * FROM student WHERE class=:class AND sex=:sex";
$array=[
'class' = "3",
'sex'="男",
];
$result = $db->myQuery($sql,$array);
$result就是查询返回的结果了。
后言
本章是DBUtils类,下一章是Work类(模型)(前称WorkInfo),之后再说workManage.php(视图)。
讲完这三个对于UpWork的作业管理就基本讲完了。
先给你们看一下成品
我是Moreant,下一节Work类见~
版权声明:本文为weixin_43145371原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。