建立一个php 基础类
在些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 基础类的更多相关文章
- linux建立一个快捷方式,连接到另一个目录
sudo ln -s 源目录 目标快捷方式比如你要在/etc下面建立一个叫LXBC553的快捷方式,指向/home/LXBC,那就是sudo ln -s /home/LXBC /etc/LXBC553
- [转]使用Scrapy建立一个网站抓取器
英文原文:Build a Website Crawler based upon Scrapy 标签: Scrapy Python 209人收藏此文章, 我要收藏renwofei423 推荐于 11个月 ...
- Windows下用Codeblocks建立一个最简单的DLL动态链接库
转自:http://blog.csdn.net/wangwei_cq/article/details/8187576 来源:http://hi.baidu.com/hellosim/item/9ae4 ...
- 【转】如何建立一个样式新颖的CSS3搜索框
在线演示 搜索框大概是web开发中最常用的UI元素之一,我想基本没有必要去介绍如何使用它.无论是网站还是web应用,都会为了增强用户体验而添加它,那么你是不是也想过设计一个别致的搜索框? 在今天的文章 ...
- 如何建立一个完整的游戏AI
http://blog.friskit.me/2012/04/how-to-build-a-perfect-game-ai/ 人工智能(Artificial Intelligence)在游戏中使用已经 ...
- OSG入门即osgEarth建立一个地球的详细步骤
OSG入门即osgEarth建立一个地球的详细步骤 转:http://blog.csdn.net/xiaol_deng/article/details/9246291 最近在学习有关osg的知识,刚开 ...
- time模块目录下自己建立一个名为log的文件夹
使用python调用ping命令,然后在日志中记录ping的结果,用来监测网络连通情况. 代码: [python]from time import *from subprocess import *w ...
- 如何快速建立一个测试资源Web服务器及异步获取资源(Unity3D)
背景 1.最近看了几位专栏作家的文章,几篇提到了资源通过网络的动态获取.如何建立一个快速的测试环境,不免是一个问题,也就最简单的就是假设http服务器了,微软系的当然首选的IIS了,别的也能用阿帕奇或 ...
- 2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。答题人:张立鹏
第1步:创建SSH Key.在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步.如果没有,打开Shell ...
随机推荐
- [UE4]The global shader cache file missing 运行错误解决办法
UE4项目在VS中对项目代码编译时报如错,找了好久在UE4论坛上查到了别人的解决方案,贴出来仅供大家参考. 看到一位开发者解释出错的原因如下: There are a number of build ...
- linux5.6以下版本的不兼容问题
之前一直用的都是mysql5.6版本,最近突然使用到了mysql5.1版本,于是在导入数据的时候便出现了很多由于版本不兼容的问题. 1.mysql5.1没有datetime类型,所以对于时间类型,只能 ...
- 关于python中生成器之Send方法
#send主要是用于外部与生成器对象的交互def func1(): # 生成器函数 print("ok1") x = 10 # 函数内局部变量x赋值为10 print(x) x = ...
- angularjs的cache
首先要引入angular-cookies.js插件 angular.module('app').service('cache', ['$cookies', function($cookies){ th ...
- es6基础(1)--声明
function test(){ //let只在块作用域有效 for(let i=1;i<3;i++){ console.log(i); } //es6严格模式,变量未声明,不可以用 //con ...
- orika core工具对实体(Bean)进行深度拷贝
1. 在pom.xml中添加orika core依赖: <!-- https://mvnrepository.com/artifact/ma.glasnost.orika/orika-core ...
- spring-data-redis 中使用RedisTemplate操作Redis
Redis 数据结构简介 Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为String(字符串).List(列表).Set(集合).Hash(散列)和 Zset(有序集合 ...
- Redis 简介(官方翻译)
Redis是一个开源(基于BSD开源协议).内存型结构数据存储,可当做数据库.缓存.消息代理.它支持的数据结构有字符串.哈希表.列表.集合.可随机查询的有序集合.位图.基数统计.用于半径查询的地理位置 ...
- 关于QT_Creator不能在线调试问题
电脑:W7+64位,QT:5_7_0(vs2015版本) 用QTcreator进行在线调试时出现找不到“engine...”,原因是没有在线调试软件 CDB下载地址:http://msdn.micro ...
- python2和python3的内存使用情况
python2 对回收后的整数复用内存不作处理 python3则改进了改设计,极大的减少了内存占用 例如 a = range(1000000000000) del a 此时: python2 对于a占 ...