在些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'];
} }
?>