<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/5/5 0005
* Time: 22:23
* 类中的静态成员:静态成员和静态方法
* 作用域 :静态成员是属于类所有的,必须使用类进行调用,不能使用类对象的方法来调用
* 静态成员在类中使用self::来调用类中的静态成员 在外部使用类名::来调用
* 类成员的静态化是面向对象编程的一种趋势 有很多模拟手段
*类中成员的静态化使用关键字:static来实现
* 静态技术的使用场景还有静态延迟绑定技术
*在静态方法中不能调用非静态属性 原因是php在执行过程中会先加载静态成员 而$this 并未执行所以报错
*static 是根据上下文的调用者来决定;
*/
class Db
{
private $type;
private $host;
private $dbname;
private $user;
private $password;
private $port;
private $dsn;
protected $options;
public $pdo;
public function __construct($type,$host,$dbname,$user,$password,$port=3306)
{
$this->dbname=$dbname;
$this->user=$user;
$this->password=$password;
$this->port=$port;
$this->type=$type;
$this->host=$host;
$this->dsn = "$this->type:host=$this->host;dbname=$this->dbname";
$this->options =[
PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,//设置错误模式
PDO::ATTR_CASE=>PDO::CASE_NATURAL,//设置数据库字段保持不变
PDO::ATTR_EMULATE_PREPARES=>TRUE,//启用pdo模拟功能
PDO::ATTR_PERSISTENT=>TRUE//启用持久性连接
];
try{
//实例化pdo对象
$this->pdo = new PDO($this->dsn,$this->user,$this->password,$this->options);
// echo '连接成功';
}catch(PDOException $e){
//抛出异常
die('ERROR:'.$e->getMessage());
}
return $this->pdo;
}
//插入数据
public static function insert($pdo, $table, $data=[]){
// 创建sql预处理语句
$sql = "INSERT IGNORE {$table} SET ";
foreach(array_keys($data) as $fileld){
$sql .= $fileld.'=:'.$fileld.', ';
}
//去除sql语句的左右空格 并去除右边的逗号
$sql = rtrim(trim($sql),',').';';
//创建pdo预处理对象
$stmt = $pdo->prepare($sql);
//绑定参数到预处理对象
foreach($data as $fileld => $value){
$stmt->bindValue(":{$fileld}",$value);
}
//执行新增操作
if($stmt->execute()){
if($stmt->rowCount()>0){
return true;
}
}else{
return false;
}
}
//更新数据
public static function update($pdo, $table, $data=[], $where=''){
// 创建sql语句
$sql = "UPDATE {$table} SET ";
foreach (array_keys($data) as $field) {
$sql .= $field.'=:'. $field.', ';
}
//去掉尾部的逗号并添加分号
$sql = rtrim(trim($sql),', ');
//
// 添加更新条件
if (!empty($where)) {
$sql .= ' WHERE '.$where.';';
} else {
exit('条件不能为空');
}
// 创建stmt对象
$stmt = $pdo->prepare($sql);
//绑定参数到预处理对象中
foreach ($data as $field => $value) {
$stmt->bindValue(":{$field}", $value);
}
//执行更新操作
if ($stmt->execute()) {
if ($stmt->rowCount()>0) {
return true;
}
} else {
return false;
}
}
//查询单条数据
public static function find($pdo,$table,$fields,$where){
// c创建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';
$sql = rtrim(trim($sql),', ').';';
//创建stmt对象
$stmt = $pdo->prepare($sql);
//执行查询操作
if ($stmt->execute()){
if ($stmt->rowCount()>0){
$stmt->setFetchMode(PDO::FETCH_ASSOC);
return $stmt->fetch();
}
}else{
return $stmt->error;
}
}
//查询多条数据
public static function select($pdo, $table, $fields, $where='', $order=''){
// 创建sql语句
$sql = 'SELECT ';
if (is_array($fields)){
foreach($fields as $field){
$sql .= $fiele.', ';
}
}else{
$sql .=$fields;
}
$sql = rtrim(trim($sql),',');
$sql .=' FROM '.$table;
//添加查询条件
if(!empty($where)) {
$sql .= ' WHERE '. $where;
}
//添加排序条件
if (!empty($order)){
$sql .=' ORDER BY '.$order;
}
//去掉尾部的逗号并添加逗号
$sql = rtrim(trim($sql),' , ').';';
//创建pdo预处理对象
$stmt= $pdo->prepare($sql);
//执行操作
if ($stmt->execute()){
if($stmt->rowCount()>0){
$stmt->setFetchMode(PDO::FETCH_ASSOC);
return $stmt->fetchAll();
}
}else{
return false;
}
}
//删除数据
public static function delete($pdo,$table, $where='') {
//创建SQL语句
$sql = "DELETE FROM {$table} ";
//添加删除条件
if(!empty($where)) {
$sql .= 'WHERE '. $where;
}else{
exit('条件不能为空');
}
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql),', ').';';
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//执行删除操作
if($stmt->execute()){
if($stmt->rowCount()>0){
return true;
}
} else {
return false;
}
}
public function close()
{
//关闭PDO链接
return $this->pdo = null;
}
}点击 "运行实例" 按钮查看在线实例
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/5/5 0005
* Time: 22:23
*/
include 'class/Db.php';
$connect = new Db('mysql','127.0.0.1','php','root','root',3306);
Db::insert($connect->pdo,'user',['user_name'=>'lin','email'=>'dphp@qq.com','password'=>sha1(123456)]);
//更多方法请自行测试
//ECHO phpinfo();点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号