Correcting teacher:天蓬老师
Correction status:qualified
Teacher's comments:花时间是一方面, 多写也很重要
<?php
//PDO类封装
class MyDB
{
// 连接参数
public $dsn;
public $user;
public $password;
// 连接属性
public $pdo;
// 连接方法
public function connect()
{
$this->pdo = new PDO($this->dsn, $this->user, $this->password);
}
// 实例化后自动连接数据库
public function __construct($dsn, $user, $password)
{
$this->dsn = $dsn;
$this->user = $user;
$this->password = $password;
// 调用对象方法,实现自动连接
$this->connect();
}
//查询多条记录
public function select($table, $fields, $where = '', $order = '', $limit = '')
{
//拼接sql
$sql = 'SELECT';
if (is_array($fields)) {
foreach ($fields as $field) {
$sql .= $field . ',';
}
} else {
$sql .= $fields;
}
$sql = rtrim(trim($sql), ',');
$sql .= 'FROM' . $table;
// 查询条件
if (!empty($where)) {
$sql .= 'WHERE' . $where;
}
// 排序条件
if (!empty($order)) {
$sql .= 'order by' . $order;
}
// 分页条件
if (!empty($limit)) {
$sql .= 'limit' . $limit;
}
$sql .= ';';
// 创建PDO预处理对象
$stmt = $this->pdo->prepare($sql);
// 执行查询操作
if ($stmt->execute()) {
if ($stmt->rowCount() > 0) {
$stmt->setFetchMode(PDO::FETCH_ASSOC);
// 返回一个二维数组
return $stmt->fetchAll();
}
} else {
return false;
}
}
// 查询单条记录
public function find($table, $fields, $where = '')
{
$pdo = $this->pdo;
// 创建sql语句
$sql = 'SELECT';
if (is_array($fields)) {
foreach ($fields as $field) {
$sql .= $field . ',';
}
}else{
$sql.=$fields;
}
$sql = rtrim(trim($sql), ',');
$sql .= 'FROM' . $table;
// 查询条件
if (!empty($where)) {
$sql .= 'WHERE' . $where;
}
$sql .= 'LIMIT 1;';
// 创建PDO预处理对象
$stmt = $pdo->prepare($sql);
// 执行查询操作
if ($stmt->execute()) {
if ($stmt->rowCount() > 0) {
$stmt->setFetchMode(PDO::FETCH_ASSOC);
return $stmt->fetch();
}
} else {
return false;
}
}
//添加数据
public function add($table, $data = [])
{
// 创建sql语句
$sql = "INSERT INTO {$table} SET";
// 组装插入语句
if (is_array($data)) {
foreach ($data as $k => $v) {
$sql .= $k . '="' . $v . '",';
}
} else {
return false;
}
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql), ',') . ';';
// 创建PDO预处理对象
$stmt = $this->pdo->prepare($sql);
// 执行新增操作
if ($stmt->execute()) {
if ($stmt->rowCount() > 0) {
return true;
}
} else {
return false;
}
}
// 更新数据
public function update($table, $data = [], $where = '')
{
// 创建sql语句
$sql = "UPDATE{$table}SET";
// 组装修改语句
if (is_array($data)) {
foreach ($data as $k => $v) {
$sql .= $k . '="' . $v . '",';
}
}
// 去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql), ',');
// 查询条件
if (!empty($where)) {
$sql .= 'WHERE' . $where;
}
// 创建PDO预处理对象
$stmt = $this->pdo->prepare($sql);
// 执行新增操作
if ($stmt->execute()) {
if ($stmt->rowCount() > 0) {
return true;
}
} else {
return false;
}
}
// 删除记录
public function real_delete($table, $where = '')
{
// 创建sql语句
$sql = 'DELETE FROM {$table}';
// 查询语句
if (!empty($where)) {
$sql .= 'WHERE' . $where;
}
// 创建pdo预处理对象
$stmt = $this->pdo->prepare($sql);
// 执行删除操作
if ($stmt->execute()) {
if ($stmt->rowCount() > 0) {
return true;
}
} else {
return false;
}
}
// 统计数量
public function count_num($table, $where = '')
{
// 创建sql语句
$sql = 'SELECT count(*) as count_number FROM' . $table;
//查询条件
if (!empty($where)) {
$sql .= 'WHERE' . $where;
}
// 创建sql预处理对象
$stmt=$this->pdo->prepare($sql);
// 执行查询操作
if($stmt->execute()){
if($stmt->rowCount()>0){
$row =$stmt->fetch(PDO::FETCH_ASSOC);
$rows= $row['count_number'];
return $rows;
}
}else{
return false;
}
}
// 析构方法
public function __destruct()
{
$this->pdo =null;
}
}
//实例化
$db =new MyDB('mysql:host=localhost;dbname=ou','root','root');
if($db->pdo){
echo '<h2>连接成功</h2>';
}
echo '<h3>查询多条:</h3>';
$res =$db->select('user','username');
echo '<pre>';
print_r($res);
echo '<hr>';
echo '<h3>查询一条</h3>';
$res =$db->find('user','username','uid=1');
print_r($res);
echo '<hr>';
echo '<h3>添加数据</h3>';
$data=[
'username'=>'xiaohong',
'password'=>'123456',
];
$insert =$db->add('user',$data);
var_dump($insert);
echo '<hr>';
echo '<h3>更新数据:</h3>';
$data = [
'password' => '111111',
]; //这里密码的值不改,还是原来123456 居然执行结果会报null
$update = $db->update('user',$data,'uid=3');
var_dump($update);
echo '<hr>';
echo '<h3>删除数据:</h3>';
$delete = $db->real_delete('user','uid=3');
var_dump($delete);
echo '<hr>';
echo '<h3>统计:</h3>';
$count = $db->count_num('user');
echo $count;
echo '<pre>';