1.把 php公用方法库中的 数据库操作函数, 重写到 Db类中。
MydB
类
<?php
class MyDb{
//pdo成员
private $pdo = null;
//构造函数
public function __construct()
{
$this->pdo = $this->initPdo();
}
//析构函数
function __destruct()
{
$this->unPdoDB();
}
/*初始化pdo*/
private function initPdo(){
$db=[
'type' => 'mysql',
'host' => 'localhost',
'port' => '3306',
'dbname' => 'jason',
'username' => 'root',
'password' => 'root'
];
//配置dsn
$dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}";
try{
$pdo = new PDO($dsn,$db['username'],$db['password']);
return $pdo;
}catch (PDOException $exception){
echo '数据连接异常'.$exception->getMessage();
return false;
}
}
/*查询操作*/
public function select($table,$fields, $where='', $order='',$limit=''){
$sql = 'SELECT ';
if (is_array($fields)){
foreach ($fields as $field){
echo $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 .= ';';
echo $sql;
echo '<hr>';
//创建PDO预处理对象
$stmt = $this->pdo->prepare($sql);
//执行查询操作
if($stmt->execute()){
if($stmt->rowCount()>0){
$stmt->setFetchMode(PDO::FETCH_ASSOC);
//返回一个二维数组
return $stmt->fetchAll();
}
} else {
return false;
}
}
/**
* 查询单条记录
* @param $db
* @param $table 表名
* @param $fields 查询的字段 *
* @param string $where 条件
* @return array
*/
function find($table,$fields,$where=''){
$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 = $this->pdo->prepare($sql);
//执行查询操作
if($stmt->execute()){
if($stmt->rowCount()>0){
$stmt->setFetchMode(PDO::FETCH_ASSOC);
return $stmt->fetch();
}
} else {
return false;
}
}
/**
* 新增数据
* @param $table
* @param $data
* @return bool
*/
public function insertDb($table,$data=[]){
$sql = "INSERT INTO {$table} SET ";
if (is_array($data)){
foreach ($data as $key=>$value){
$sql .= "{$key} = '{$value}' , ";
}
}else{
return false;
}
$sql = rtrim(trim($sql),',').';';
echo 'sql语句'.$sql;
$stmt = $this->pdo->prepare($sql);
//执行新增操作
if($stmt->execute()){
if($stmt->rowCount()>0){
return true;
}
} else {
return false;
}
}
/**
* 删除记录
* @param $db
* @param $table
* @param string $where
* @return bool
*/
function delete($table,$where=''){
$sql = "DELETE FROM {$table}";
if (!empty($where)){
$sql .= " WHERE {$where}";
}else{
return false;
}
echo $sql;
$stmt = $this->pdo->prepare($sql);
//执行新增操作
if($stmt->execute()){
if($stmt->rowCount()>0){
return true;
}
} else {
return false;
}
}
/**
* 更新数据
* @param $db
* @param $table
* @param $data
* @return bool
*/
function update($table,$data=[], $where='') {
$sql = "UPDATE {$table} SET ";
if (is_array($data)){
foreach ($data as $key=>$value){
$sql .= "{$key} = '{$value}' , ";
}
}else{
return false;
}
$sql = rtrim(trim($sql),',');
//更新条件
$sql .= "WHERE {$where}";
//去掉尾部逗号,并添加分号结束
echo $sql;
$stmt = $this->pdo->prepare($sql);
//执行新增操作
if($stmt->execute()){
if($stmt->rowCount()>0){
return true;
}
} else {
return false;
}
}
/**
* 统计数量
* @param $table
* @param string $where
* @return number
*/
function count_num($table,$where){
//创建SQL语句
$sql = 'SELECT count(*) as count_number FROM '.$table;
//查询条件
if(!empty($where)){
$sql .= ' WHERE '.$where;
}
//创建PDO预处理对象
$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;
}
}
//销毁PDO连接
public function unPdoDB(){
$this->pdo = null;
}
}
/***********实例化对象和调用方法**********/
//创建对象
$obj = new MyDb();
//查询多条记录
$arr = $obj->select('account','username');
print_r($arr);
echo '<hr>';
//查询单条
$arr1 = $obj->find('account','username','user_id=6');
print_r($arr1);
echo '<hr>';
//增加数据
$data = [
'name' => 'xjp',
'alias' => '新加坡',
'cate_id' => 6
];
if ($obj->insertDb('category',$data)){
echo '增加数据成功';
}else{
echo '增加数据失败';
}
echo '<hr>';
//删除数据
if ($obj->delete('category','cate_id=6')){
echo '删除数据成功';
}else{
echo '删除数据失败';
}
echo '<hr>';
//更新数据
$data = [
'name' => 'tg1',
'alias' => '泰国'
];
if ($obj->update('category',$data,'cate_id=7')){
echo '更新数据成功';
}else{
echo '更新数据失败';
}
//获取数量
$nub = $obj->count_num('account','user_id');
echo '获取数量'.$nub;
//销毁连接
$obj->unPdoDB();
$obj = null;