php的MySQL连接用静态方法_使用静态方法的重载技术, 实现一个数据库访问类

使用静态方法的重载技术, 实现一个数据库访问类

demo1.php文件

实例

require 'Query.php';

class Db

{

//数据库连接对象

protected static $pdo=null;

//数据库连接方法,每次查询时连接,实现真正的惰性连接,节省系统开销

public static function connection()

{

self::$pdo=new PDO('mysql:host=127.0.0.1;dbname=php','root','root');

//        self::$pdo = new PDO('mysql:host=localhost;dbname=php','root','root');

}

//静态方法的重载

public static  function __callStatic($name, $arguments)

{

//连接上数据库

self::connection();

//实例化查询类

$query=new Query(self::$pdo);

//访问Query中的方法

return call_user_func_array([$query,$name],[$arguments[0]]);

}

}

$cats=Db::table('category')

->field('cate_id,name,alias')

->where('cate_id>=1')

->select();

// 遍历查询结果

foreach ($cats as $cat){

print_r($cat);echo'
';

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

Query.php文件

实例

class Query

{

//连接对象

public $pdo=null;

//数据库名称

public $table='';

//字段列表

public $field='';

//查询条件

public $where='';

//显示数量

public $limit=0;

//构造方法

public function __construct($pdo)

{

$this->pdo=$pdo;

}

//调用表名

public function table($tableName)

{

$this->table=$tableName;

//关键是这一步

return $this;

}

//字段

public function field($fields)

{

$this->field=$fields;

//关键是这一步

return $this;

}

//设置查询条件

public function where($where)

{

$this->where=$where;

return $this;

}

//设置显示数量

public function limit($limit)

{

$this->limit=$limit;

return $this;

}

//创建SQL语句

public function select()

{

//设置查询条件

$fields = empty($this->field) ? '*' : $this->field;

$where = empty($this->where) ? '' : ' WHERE '.$this->where;

$limit = empty($this->limit) ? '' : ' LIMIT '.$this->limit;

//SQL

$sql = 'SELECT '.$fields.' FROM '.$this->table. $where . $limit;

// 预处理查询

$stmt = $this->pdo->prepare($sql);

$stmt->execute();

return $stmt->fetchAll(PDO::FETCH_ASSOC);

}

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值