博客列表 >链式数据库查询--2019年8月4日11点57分

链式数据库查询--2019年8月4日11点57分

辰晨的博客
辰晨的博客原创
2019年08月04日 12:06:41793浏览

在线运行地址:http://www.pursuer.top/sql/index.php

query.php

主要是创建sql执行语句,链式调用关键在return $this;

<?php 

namespace sql;
 
class Query
{
	// pdo对象
	public $pdo = null;

	// 数据表
	public $table; 

	// 查询字段
	public $field = '*';

	// 查询条件
	public $where;

	// 查询数量
	public $limit;

	// 构造方法,连接数据库
	// 构造方法待理解
	public function __construct($pdo){
		$this->pdo = $pdo;
	}

	// 设置表名
	public function table($tableName){
		$this->table = $tableName;
		// 返回当前类的实例
		return $this;
	}

	// 设置字段
	public function field($fields = '*'){
		// empty判断是否有值,有值为值,无值默认
		$this->field = empty($fields) ? '*' : $fields;
		return $this;
	}

	// 设置查询条件
	public function where($where = ''){
		// empty()判断值,第一个$where为默认赋值的空值,第二个$where为用户所传值
		$this->where = empty($where) ? $where : ' WHERE ' . $where;
		return $this;
	}

	// 设置数量
	public function limit($limit){
		$this->limit = empty($limit) ? $limit : ' LIMIT '. $limit;
		return $this;
	}

	// 拼接sql语句
	public function select(){
		$sql = 'SELECT ' 
				.$this->field 
				. ' FROM ' 
				. $this->table 
				. $this->where 
				. $this->limit;
		$stmt = $this->pdo->prepare($sql);
		$stmt->execute();
		return $stmt->fetchAll(\PDO::FETCH_ASSOC);
	}

}

运行实例 »

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

index.php

连接数据库,执行sql语句

<?php

namespace sql;
require 'Query.php';

use sql\Query;

class Db
{
	// 连接数据库对象
	protected static $pdo = null;

	// 连接方法
	public static function connection(){
		self::$pdo = new \PDO(
			'mysql:host=127.0.0.1;dbname=books','root','root');
	}

	public static function __callStatic($name,$arguments){
		// 连接数据库
		self::connection();
		$query = new Query(self::$pdo);
		return call_user_func_array([$query,$name], $arguments);
	}
}

$books = Db::table('books')
    ->field('book_id,book_name,book_author,book_desc')
    ->where('book_id > 5')
    ->limit(5)
    ->select();

foreach ($books as $book) {
    print_r($book); echo '<hr>';
}

运行实例 »

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


上一条:0802自动加载下一条:登录与验证-0726
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议