博主信息
博文 22
粉丝 3
评论 3
访问量 19745
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
链式数据库查询--2019年8月4日11点57分
辰晨的博客
原创
945人浏览过

在线运行地址: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>';
}

运行实例 »

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


批改状态:合格

老师批语:问一下自己, 如果让你自己写, 能否写出来, 会卡在哪里, 这样才会进步
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学