在些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. window的三大功能,行内样式获取的讲解 getcomputerStyle

    window的三大功能: js引擎 dom渲染 获取行内中css的属性: chrome和Firefox加上 ie9+(所谓的高级浏览器)用的方法: window.getComeputerStyle(d ...

  2. Oracle之ora-01031 insufficient privileges

              解决ora-01031insufficient privileges错误 解决system用户不能登录的问题 alter user system account unlock id ...

  3. psql: could not connect to server: No such file or directory&&PGHOST

    由于环境变量 PGHOST配置不当引起的 postgres@pgdb-> psql psql: could not connect to server: No such file or dire ...

  4. 思考-Status management and validation(状态管理与验证)

    结合自己的项目,有这么一个模块,这个模块用来添加一个停车场,注册信息又分:基本信息,管理设置,管理员设置3部分组成,每部分都有input=text的输入框,点击保存按钮需要验证各个部分的输入框是否有合 ...

  5. TensorFlow使用基础-Tensor

    使用 TensorFlow 之前你需要了解关于 TensorFlow 的以下基础知识 :• 使用图 (graphs) 来表示计算 .• 在会话 ( Session ) 中执行图 .• 使用张量 (te ...

  6. hive计算周一的日期

    ) FreeMarker --',-7)?date('yyyy-MM-dd'),'week')?string('yyyy-MM-dd')}'

  7. 使用vim时生成的.swp文件

    1. 在使用vim时,退出编辑后,发现生成了swp文件,如下: 发现用vim打开一个文件时,都会产生一个.swp的隐藏文件(即文件名.开头的),这个文件是一个临时交换文件,用来备份缓冲区中的内容,用于 ...

  8. web app 、native app、hybrid app比较

    web app .native app.hybrid app比较 产品新人学习路 关注 2017.06.04 14:52* 字数 1887 阅读 11476评论 1喜欢 15 之前做讨论的时候,提出了 ...

  9. Linux 安装redis 基本配置 发布订阅,安全配置,持久化 rdb ,aof

    redis redis相关配置1.yum  源码 rpm  yum 快速,间接,高效,解决依赖关系,(自动安装到某个路径,不可控),通过yum安装的软件查询命令 rpm -ql nginx  yum源 ...

  10. chrome浏览器的VUE调试插件Vue.js devtools

      chrome浏览器的VUE调试插件Vue.js devtools 应用商店直接安装 安装成功后在VUE文件打开可以直接调试: 提示效果如下: F12进入调试状态即可: 安装中出现的问题: 插件安装 ...