在些PHP文件的时候,一般首先都是要先写一下基础类:

主要包括以下几个方面:

1.服务器的链接:包括主机,用户名,密码

2.数据库的选择:要操作哪个数据库

3.字符集的设置:设置什么样的编码

4.查询数据库:4.1 包括查询所有数据;4.2 查询某一行数据 ;4.3 查询某一列数据;

5.数据库的添加:添加一行或多行数据

6.数据库的更新:更新一行或多行数据

7.数据库的删除:删除一行或多行数据

开始建立一个基础类Mysql:命名为Mysql.class.php

 <?php
class Mysql{
private $dbHost; //服务器
private $dbUser; //用户名
private $dbPwd;// 密码
private $dbName; //数据库名称
// __construct 函数是一个php魔术方法,在实例化的时候,会最先执行__construct()方法
public function __construct($_dbHost,$_dbUser,$_dbPwd,$_dbName){
$this->dbHost = $_dbHost;
$this->dbUser = $_dbUser;
$this->dbPwd = $_dbPwd;
$this->dbName = $_dbName;
$link = $this->connect(); // 服务器连接
if($link){
$this->selectDb(); //连接成功,则选择数据库
$this->setCode(); //连接成功,则设置字符集编码
}else{
die(mysql_error()); // 连接失败,则显示数据库连接失败的信息
};
};
// mysql 语句执行方法
public function query($sql){
return mysql_query($sql);
};
// 数据库连接方法
public function connect(){
return mysql_connect($this->dbHost,$this->dbUser,$this->dbPwd);
};
// 数据库选择方法
public function selectDb(){
mysql_select_db($this->dbName);
};
// 字符集编码设置方法
public function setCode(){
$this->query("set names utf8");
};
// 获取所有数据方法
public function getAll($sql){
$res = $this->query($sql); // 查询数据库出来的数据,是一个资源类型的,所以必须使用函数进行转化,
// 一般有三个函数进行mysql数据库资源的数据转化:一个是 mysql_fetch_row() ,返回的是一个数字索引的数组,可以使用数字索引进行调用;
// 一个是mysql_fetch_assoc() ,返回的是关联索引的数字,只能使用关联索引进行调用,关联索引就是字段的数据变字段的名称
// 还有一个是mysql_fetch_array(),返回的是数字索引和关联索引组成的数组,所以可以使用数组索引进行调用,也可以使用关联索引进行调用;相当于mysql_fetch_row()和mysql_fetch_assoc()的集合
$list = array(); // 这里设定一个数组,用来接收从数据库中返回的数据,
// mysql_fetch_assoc()返回的是一个指针,每次只是返回一条数据,指针即指向返回的这条数据,当次条数据被返回以后,指针会指向下一条数据,当数据取完后,指针指向null
// 所以此处使用while进行循环
while($row = mysql_fetch_assoc($res)){
$list[] = $row ; // 当不对数组设置索引,就进行赋值的话,会自动将赋值的项添加到数组的最后面
// array_push($list,$row); // array_push() 函数是对数组进行入栈处理,效果和 $list[] = $row 是一样的
};
return $list;
};
//获取一行数据
public function getRow($sql){
$res = $this->query($sql);
//这里获取一行数据,不需要对数据进行数组处理,因为只有一行数据,所以可以直接返回
return mysql_fetch_assoc($res);
};
// 获取某一列数据
public function getCol($sql){
$res = $this->query($sql);
$row = mysql_fetch_assoc($res);
return $row[0];
};
public function delete($sql){
// 删除数据,直接执行$sql 的删除语句就行了
$this->query($sql);
}; //插入
// INSERT INTO message( title, content ) VALUES ( '星星', '小星星' );
// 产品经理 ----> 痛点
/*
add( array(
'title' => '星星',
'content' => '小星星'
), 'message' );
*/ // 添加(或者说插入)数据一条数据:有两个参数,一个是需要插入的表,另一个是插入的数据,因为有可能是插入一个字段,也可能是插入两个或者多个字段,
// 所以使用数组来存档要插入的数据,这样,无论插入几个字段,都使用同一个方法就可以了
public function add($tbName,$data){
$sql = "insert into {$tbName} (";
// implode() 将数组链接成字符串,explode()
$sql .= implode(",",array_keys($data))."values (";
// 值要使用单引号括起来
$sql .= implode(",'",array_values($data))."')";
return $this->query($sql);
};
//数据一条数据:有三个参数,一个是需要更新的表,一个是更新的数据,另一个是更新条件
public function update($tbName,$data,$condition){
$sql = "update {$tbName} set";
foreach($data as $key => $value){
// 值$value 要使用单引号括起来
$sql .= {$key}."='".{$value}."',";
}
// 但是这样处理的结果:是在语句的最后面多了一个逗号,例如以下语句
// UPDATE message SET title = 'hello', content = '你好',
// 既然多了一个逗号,那在最后把逗号去掉就可以了,使用substr(string,start,end)函数:
// 有三个参数,一个是要处理的字符串string,一个是起始位置start,一个是结束位置end 位置参数如果为负,则从右面开始算
$sql = substr($sql,0,-1);
$sql .= " ".$condition;
return $this->query($sql);
};
}
$mysql = new Mysql("localhost","root","root","message");
?>

写好了基础的类,就可以进行调用了

再写一个Msgmodel 类:

 <?php
class MsgModel{
public $db;
public $tbName = "message";
public function __construct(&$dbObj){
$this->db = $dbObj;
}
// 添加一条Msg数据
public function msgAdd($data){
return $this->db->add($this->tbName,$data);
}
// 添加一条Msg 所有数据
public function getMsgAll(){
$sql = "SELECT * FROM {$this->tbName} ORDER BY time DESC";
return $this->db->getAll($sql);
} // 获取Msg的所有条数
public function getMsgCol(){
$sql = "SELECT COUNT(*) FROM {$this->tbName}";
return $this->db->getCol($sql);
}
public function getMsgColBycatId($catId){
if($catId == 0){
return $this->getMsgCol();
}else{
$sql = "SELECT COUNT(*) FROM {$this->tbName} WHERE cat_id = {$catId}";
return $this->db->getCol($sql);
} }
public function getMsgList($p,$pageSize){
$sql = "SELECT * FROM {$this->tbName} ORDER BY time DESC ";
$sql .= " LIMIT ".($p-1)*$pageSize.",".$pageSize; return $this->db->getAll($sql);
}
public function getMsgListByCatId($p,$pageSize,$catId){
if($catId==0){
return $this->getMsgList($p,$pageSize);
}else{
$sql = "SELECT * FROM {$this->tbName} ";
$sql .="WHERE cat_id = {$catId} ORDER BY time DESC ";
$sql .= " LIMIT ".($p-1)*$pageSize.",".$pageSize;
return $this->db->getAll($sql);
}
}
public function getMsgById($msgId){
$sql = "SELECT * FROM {$this->tbName} WHERE message_id = $msgId";
return $this->db->getRow($sql);
}
public function getMsgRandId(){
$sql = "SELECT * FROM {$this->tbName} ORDER BY RAND() LIMIT 1";
$row = $this->db->getRow($sql);
return $row['message_id'];
}
public function getPrevMsgId($msgId){
$sql = "SELECT * FROM {$this->tbName} WHERE message_id < {$msgId}";
$sql .= " ORDER BY message_id DESC LIMIT 1";
$row = $this->db->getRow($sql);
return $row['message_id'];
}
public function getNextMsgId($msgId){
$sql = "SELECT * FROM {$this->tbName} WHERE message_id > {$msgId}";
$sql .= " ORDER BY message_id ASC LIMIT 1";
$row = $this->db->getRow($sql);
return $row['message_id'];
}
public function getMinMsgId(){
$sql = "SELECT * FROM {$this->tbName} ORDER BY message_id ASC LIMIT 1";
$row = $this->db->getRow($sql);
return $row['message_id'];
}
public function getMaxMsgId(){
$sql = "SELECT * FROM {$this->tbName} ORDER BY message_id DESC LIMIT 1";
$row = $this->db->getRow($sql);
return $row['message_id'];
} }
?>

建立一个php 基础类的更多相关文章

  1. linux建立一个快捷方式,连接到另一个目录

    sudo ln -s 源目录 目标快捷方式比如你要在/etc下面建立一个叫LXBC553的快捷方式,指向/home/LXBC,那就是sudo ln -s /home/LXBC /etc/LXBC553

  2. [转]使用Scrapy建立一个网站抓取器

    英文原文:Build a Website Crawler based upon Scrapy 标签: Scrapy Python 209人收藏此文章, 我要收藏renwofei423 推荐于 11个月 ...

  3. Windows下用Codeblocks建立一个最简单的DLL动态链接库

    转自:http://blog.csdn.net/wangwei_cq/article/details/8187576 来源:http://hi.baidu.com/hellosim/item/9ae4 ...

  4. 【转】如何建立一个样式新颖的CSS3搜索框

    在线演示 搜索框大概是web开发中最常用的UI元素之一,我想基本没有必要去介绍如何使用它.无论是网站还是web应用,都会为了增强用户体验而添加它,那么你是不是也想过设计一个别致的搜索框? 在今天的文章 ...

  5. 如何建立一个完整的游戏AI

    http://blog.friskit.me/2012/04/how-to-build-a-perfect-game-ai/ 人工智能(Artificial Intelligence)在游戏中使用已经 ...

  6. OSG入门即osgEarth建立一个地球的详细步骤

    OSG入门即osgEarth建立一个地球的详细步骤 转:http://blog.csdn.net/xiaol_deng/article/details/9246291 最近在学习有关osg的知识,刚开 ...

  7. time模块目录下自己建立一个名为log的文件夹

    使用python调用ping命令,然后在日志中记录ping的结果,用来监测网络连通情况. 代码: [python]from time import *from subprocess import *w ...

  8. 如何快速建立一个测试资源Web服务器及异步获取资源(Unity3D)

    背景 1.最近看了几位专栏作家的文章,几篇提到了资源通过网络的动态获取.如何建立一个快速的测试环境,不免是一个问题,也就最简单的就是假设http服务器了,微软系的当然首选的IIS了,别的也能用阿帕奇或 ...

  9. 2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。答题人:张立鹏

    第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步.如果没有,打开Shell ...

随机推荐

  1. 廖雪峰Java4反射与泛型-3泛型-7泛型和反射

    1.部分反射API是泛型 1.1获取反射API的泛型 部分反射API是泛型,如Class<T>是泛型 //如果使用Class,不带泛型,出现compile warning编译警告 Clas ...

  2. k8s服务发现和负载均衡(转)

    原文 http://m635674608.iteye.com/blog/2360095 kubernetes中如何发现服务 如何发现pod提供的服务 如何使用kube-dns发现服务   servic ...

  3. python之路——4

    王二学习python的笔记以及记录,如有雷同,那也没事,欢迎交流,wx:wyb199594 复习 1.ASCII: 字母 数字 特殊字符,1个字节(8位)表示 Unicode :16位 两个字节 一个 ...

  4. 可变卷积Deforable ConvNet 迁移训练自己的数据集 MXNet框架 GPU版

    [引言] 最近在用可变卷积的rfcn 模型迁移训练自己的数据集, MSRA官方使用的MXNet框架 环境搭建及配置:http://www.cnblogs.com/andre-ma/p/8867031. ...

  5. 提高modem的core dump级别

    zhangze@zhangze-OptiPlex-7040:~/e2_8939-E2-2104026-CTA/device/qcom/common$ git showcommit be2b5cb33a ...

  6. UA池和代理池在scrapy中的应用

    一.下载中间件 下载中间件(Downloader Middlewares) 位于scrapy引擎和下载器之间的一层组件. - 作用: (1)引擎将请求传递给下载器过程中, 下载中间件可以对请求进行一系 ...

  7. oracle执行update时卡死问题的解决办法

    原因: 由于在PLSQL Developer执行update时没有commit,oracle将该条记录锁住了. 可以通过以下办法解决: 先查询锁定记录 Sql代码 SELECT s.sid, s.se ...

  8. MySQL函数大全及用法示例

    1.字符串函数ascii(str)   返回字符串str的第一个字符的ascii值(str是空串时返回0)  mysql> select ascii('2');   -> 50  mysq ...

  9. ToList()分组用法...

  10. html5本地存储技术 localstorage

    html在使用的时候,例如在input框里面,用户输入信息的时候,一点提交信息就开始向后天交互 但是一刷新或者用户再打开一个新的网页又得重新输入,这就牵扯到本地存储的问题 LocalStorage,是 ...