1)第一种方法

<?php  

/*
*类功能:实现数据库的连贯查询操作
*/
class mysql_query{
var $tbl=’user’;//要操作的表名
var $limit=”;//存储limit语句的变量
var $order=”;//存储order语句的变量
var $sql=”;//存储完整sql语句的变量 function limit($str) {
$this->limit=’limit ‘.$str;//设置limit语句
//返回对类自身的引用,这里不能使用return new mysql_qery(),
//因为这样相当于又创建了类的一个新实例,那么上一步设置的limit语句,在新实例中是不存在的
//大家可以自己实验
//因此要返回$this,即当前类的实例
return $this;
} function order($str) {
$this->order=’order by ‘.$str;//设置order语句
return $this;//返回对类自身的引用
} function findall() {
$this->sql=’select * from ‘.$this->tbl.’ ‘.$this->order.’ ‘.$this->limit;//拼接sql语句
echo $this->sql;//输出,由于是示例,所以没有写查询数据库的代码
} } //Example
$mysqlDb=new mysql_query();
$result = $mysqlDb->limit(’0,10′)->order(‘id desc’)->findall();
print_r($result);

2)php __call()方法实现数据库连贯操作

<?php
namespace Config;
// 使用__call()方法来实现数据库连贯操作
// 申明一个Db类(数据库操作类)的简单操作模型
class LinkAction
{
private $sql = array(
"field" => "",
"where" => "",
"order" => "",
"limit" => "",
"group" => "",
"having" => "",
); // 连贯操作调用field() where() order() limit() group() having()方法,组合sql语句
function __call($methodName,$args)
{
// 将第一个参数(代表不存在方法的方法名称),全部转成小写方式,获取方法名称
$methodName = strtolower($methodName); // 如果调用的方法名和成员属性数组$sql下标对应上,则将第二个参数给数组中下标对应的元素
if(array_key_exists($methodName,$this->sql)){
$this->sql[$methodName] = $args[0];
}else{
echo '调用类'.get_class($this).'中的方法'.$methodName.'()不存在';
}
// 返回自己对象,则可以继续调用本对象中的方法,形成连贯操作
return $this;
}
// 输出连贯操作后组合的一个sql语句,是连贯操作最后的一个方法
function select()
{
echo "SELECT {$this->sql['field']} FROM user {$this->sql['where']} {$this->sql['order']} {$this->sql['limit']} {$this->sql['group']} {$this->sql['having']}";
}
} $db = new LinkAction(); // 连贯操作
$db->field('sex, count(sex)')
->where('where sex in ("男","女")')
->group('group by sex')
->having('having avg(age) > 25')
->select();

 

最新文章

  1. Daily Scrum02 12.10
  2. (转)漫谈SOA(面向服务架构)
  3. 使用JS构建简单Map(转)
  4. 重新加载maven项目的依赖项
  5. 深入探析koa之异步回调处理篇
  6. Codeforces Testing Round #12 A. Divisibility 水题
  7. 关于谷歌Chrome浏览器的两个Bug?
  8. CSS3 概览 更新时间 2014-0412-1317
  9. Java中基本数据类型和包装器类型的关系
  10. 上海西服定制Angry Eagle 顶级西服,私人订制你的美
  11. maven+spring mvc初尝试
  12. T-SQL 创建、修改、删除数据库,表语法
  13. Maven搭建struts2+spring+hibernate环境
  14. POJ 2609 Ferry Loading
  15. 关于回文串的DP问题
  16. 关于php变量的赋值和引用的区别
  17. C/C++语言简介之运算符
  18. 和菜鸟一起学产品之用户体验设计UED
  19. vue-cli 2篇官方文档记录收藏
  20. Java 由浅入深GUI编程实战练习(二)

热门文章

  1. 加分二叉树 vijos1991 NOIP2003第三题 区间DP/树形DP/记忆化搜索
  2. Blog Customization
  3. 状态压缩DP(大佬写的很好,转来看)
  4. P3588 【[POI2015]PUS】(线段树优化建边)
  5. IBM Rational Rose软件下载以及全破解方法
  6. HTTP请求头中的X-Forwarded-For介绍
  7. SpringBoot上传文件大小限制
  8. hdu1074之状压dp
  9. C#并发编程之初识并行编程
  10. openCV从入门到放弃