建立一个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 ...
随机推荐
- OpenStack镜像服务基本操作
查询Glance服务状态 #glance-control all status [root@controller ~]# glance-control all status glance-api (p ...
- 无法定位序数****于动态链接库LIBEAY32.dll上
问题出现原因: GNS3打开出现问题 尝试的方法如下: 创建脚本: @echo 开始注册 copy libeay32.dll %windir%\system32 regsvr32 %windir%\s ...
- idea 破解方法--可以使用到2099年
破解方式有2种,第一种比较方便 第一种比较方便 1.使用注册码破解:http://idea.lanyus.com/ 复制这段: 2. 修改hosts文件: hosts位置:C:\Windows\Sys ...
- [UE4]RepNotify,更新通知
“复制”: 1.Replicated:复制更新 2.RepNotify:更新通知.选择这个选项,会自动生成一个通知函数(如上图所示的“OnRep_Health”),当这个变量的值有变化的时候,这个函数 ...
- video兼容--可用
兼容ie6,7,8,但是播放器会卡顿黑屏<!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- Linux程序的执行
一.多任务协调机制 $ find /boot | cpio -ocB > /tmp/boot.img 程序执行方式——流式处理 “|”是匿名管道 管道分匿名管道,命名管道.匿名管道属于临时工,随 ...
- Zookeeper数据查看工具ZooInspector
Zookeeper作为常用的集群协调者组件被广泛应用,尤其是在大数据生态圈中: Zookeeper集群存储各个节点信息,包括:Hadoop.Hbase.Storm.Kafka等等: 二.查询ZK数据的 ...
- @ResponseBody返回中文乱码
1.在方法上修改编码 这种方式,需要对每个方法都进行配置. 2.修改springmvc的配置文件 同时注意,把这个配置写在扫描包的上面.
- Angularjs给动态生成的元素绑定事件
//获取动态生成的元素 getJqforAnguar:function(jqid){ angular.element(document).injector().invoke(function($com ...
- @Autowired与@Resource 详细诠释和区别(附带例子)
@Autowired 与@Resource:1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上. 2.@Autowired默认按类型装配( ...