在些PHP文件的时候,一般首先都是要先写一下基础类:
主要包括以下几个方面:
1.服务器的链接:包括主机,用户名,密码
2.数据库的选择:要操作哪个数据库
3.字符集的设置:设置什么样的编码
4.查询数据库:4.1 包括查询所有数据;4.2 查询某一行数据 ;4.3 查询某一列数据;
5.数据库的添加:添加一行或多行数据
6.数据库的更新:更新一行或多行数据
7.数据库的删除:删除一行或多行数据
开始建立一个基础类Mysql:命名为Mysql.class.php
1 <?php 2 class Mysql{ 3 private $dbHost; //服务器 4 private $dbUser; //用户名 5 private $dbPwd;// 密码 6 private $dbName; //数据库名称 7 // __construct 函数是一个php魔术方法,在实例化的时候,会最先执行__construct()方法 8 public function __construct($_dbHost,$_dbUser,$_dbPwd,$_dbName){ 9 $this->dbHost = $_dbHost; 10 $this->dbUser = $_dbUser; 11 $this->dbPwd = $_dbPwd; 12 $this->dbName = $_dbName; 13 $link = $this->connect(); // 服务器连接 14 if($link){ 15 $this->selectDb(); //连接成功,则选择数据库 16 $this->setCode(); //连接成功,则设置字符集编码 17 }else{ 18 die(mysql_error()); // 连接失败,则显示数据库连接失败的信息 19 }; 20 }; 21 // mysql 语句执行方法 22 public function query($sql){ 23 return mysql_query($sql); 24 }; 25 // 数据库连接方法 26 public function connect(){ 27 return mysql_connect($this->dbHost,$this->dbUser,$this->dbPwd); 28 }; 29 // 数据库选择方法 30 public function selectDb(){ 31 mysql_select_db($this->dbName); 32 }; 33 // 字符集编码设置方法 34 public function setCode(){ 35 $this->query("set names utf8"); 36 }; 37 // 获取所有数据方法 38 public function getAll($sql){ 39 $res = $this->query($sql); // 查询数据库出来的数据,是一个资源类型的,所以必须使用函数进行转化, 40 // 一般有三个函数进行mysql数据库资源的数据转化:一个是 mysql_fetch_row() ,返回的是一个数字索引的数组,可以使用数字索引进行调用; 41 // 一个是mysql_fetch_assoc() ,返回的是关联索引的数字,只能使用关联索引进行调用,关联索引就是字段的数据变字段的名称 42 // 还有一个是mysql_fetch_array(),返回的是数字索引和关联索引组成的数组,所以可以使用数组索引进行调用,也可以使用关联索引进行调用;相当于mysql_fetch_row()和mysql_fetch_assoc()的集合 43 $list = array(); // 这里设定一个数组,用来接收从数据库中返回的数据, 44 // mysql_fetch_assoc()返回的是一个指针,每次只是返回一条数据,指针即指向返回的这条数据,当次条数据被返回以后,指针会指向下一条数据,当数据取完后,指针指向null 45 // 所以此处使用while进行循环 46 while($row = mysql_fetch_assoc($res)){ 47 $list[] = $row ; // 当不对数组设置索引,就进行赋值的话,会自动将赋值的项添加到数组的最后面 48 // array_push($list,$row); // array_push() 函数是对数组进行入栈处理,效果和 $list[] = $row 是一样的 49 }; 50 return $list; 51 }; 52 //获取一行数据 53 public function getRow($sql){ 54 $res = $this->query($sql); 55 //这里获取一行数据,不需要对数据进行数组处理,因为只有一行数据,所以可以直接返回 56 return mysql_fetch_assoc($res); 57 }; 58 // 获取某一列数据 59 public function getCol($sql){ 60 $res = $this->query($sql); 61 $row = mysql_fetch_assoc($res); 62 return $row[0]; 63 }; 64 public function delete($sql){ 65 // 删除数据,直接执行$sql 的删除语句就行了 66 $this->query($sql); 67 }; 68 69 //插入 70 // INSERT INTO message( title, content ) VALUES ( '星星', '小星星' ); 71 // 产品经理 ----> 痛点 72 /* 73 add( array( 74 'title' => '星星', 75 'content' => '小星星' 76 ), 'message' ); 77 */ 78 79 // 添加(或者说插入)数据一条数据:有两个参数,一个是需要插入的表,另一个是插入的数据,因为有可能是插入一个字段,也可能是插入两个或者多个字段, 80 // 所以使用数组来存档要插入的数据,这样,无论插入几个字段,都使用同一个方法就可以了 81 public function add($tbName,$data){ 82 $sql = "insert into {$tbName} ("; 83 // implode() 将数组链接成字符串,explode() 84 $sql .= implode(",",array_keys($data))."values ("; 85 // 值要使用单引号括起来 86 $sql .= implode(",'",array_values($data))."')"; 87 return $this->query($sql); 88 }; 89 //数据一条数据:有三个参数,一个是需要更新的表,一个是更新的数据,另一个是更新条件 90 public function update($tbName,$data,$condition){ 91 $sql = "update {$tbName} set"; 92 foreach($data as $key => $value){ 93 // 值$value 要使用单引号括起来 94 $sql .= {$key}."='".{$value}."',"; 95 } 96 // 但是这样处理的结果:是在语句的最后面多了一个逗号,例如以下语句 97 // UPDATE message SET title = 'hello', content = '你好', 98 // 既然多了一个逗号,那在最后把逗号去掉就可以了,使用substr(string,start,end)函数: 99 // 有三个参数,一个是要处理的字符串string,一个是起始位置start,一个是结束位置end 位置参数如果为负,则从右面开始算 100 $sql = substr($sql,0,-1); 101 $sql .= " ".$condition; 102 return $this->query($sql); 103 }; 104 } 105 $mysql = new Mysql("localhost","root","root","message"); 106 ?>
写好了基础的类,就可以进行调用了
再写一个Msgmodel 类:
1 <?php 2 class MsgModel{ 3 public $db; 4 public $tbName = "message"; 5 public function __construct(&$dbObj){ 6 $this->db = $dbObj; 7 } 8 // 添加一条Msg数据 9 public function msgAdd($data){ 10 return $this->db->add($this->tbName,$data); 11 } 12 // 添加一条Msg 所有数据 13 public function getMsgAll(){ 14 $sql = "SELECT * FROM {$this->tbName} ORDER BY time DESC"; 15 return $this->db->getAll($sql); 16 } 17 18 // 获取Msg的所有条数 19 public function getMsgCol(){ 20 $sql = "SELECT COUNT(*) FROM {$this->tbName}"; 21 return $this->db->getCol($sql); 22 } 23 public function getMsgColBycatId($catId){ 24 if($catId == 0){ 25 return $this->getMsgCol(); 26 }else{ 27 $sql = "SELECT COUNT(*) FROM {$this->tbName} WHERE cat_id = {$catId}"; 28 return $this->db->getCol($sql); 29 } 30 31 } 32 public function getMsgList($p,$pageSize){ 33 $sql = "SELECT * FROM {$this->tbName} ORDER BY time DESC "; 34 $sql .= " LIMIT ".($p-1)*$pageSize.",".$pageSize; 35 36 return $this->db->getAll($sql); 37 } 38 public function getMsgListByCatId($p,$pageSize,$catId){ 39 if($catId==0){ 40 return $this->getMsgList($p,$pageSize); 41 }else{ 42 $sql = "SELECT * FROM {$this->tbName} "; 43 $sql .="WHERE cat_id = {$catId} ORDER BY time DESC "; 44 $sql .= " LIMIT ".($p-1)*$pageSize.",".$pageSize; 45 return $this->db->getAll($sql); 46 } 47 } 48 public function getMsgById($msgId){ 49 $sql = "SELECT * FROM {$this->tbName} WHERE message_id = $msgId"; 50 return $this->db->getRow($sql); 51 } 52 public function getMsgRandId(){ 53 $sql = "SELECT * FROM {$this->tbName} ORDER BY RAND() LIMIT 1"; 54 $row = $this->db->getRow($sql); 55 return $row['message_id']; 56 } 57 public function getPrevMsgId($msgId){ 58 $sql = "SELECT * FROM {$this->tbName} WHERE message_id < {$msgId}"; 59 $sql .= " ORDER BY message_id DESC LIMIT 1"; 60 $row = $this->db->getRow($sql); 61 return $row['message_id']; 62 } 63 public function getNextMsgId($msgId){ 64 $sql = "SELECT * FROM {$this->tbName} WHERE message_id > {$msgId}"; 65 $sql .= " ORDER BY message_id ASC LIMIT 1"; 66 $row = $this->db->getRow($sql); 67 return $row['message_id']; 68 } 69 public function getMinMsgId(){ 70 $sql = "SELECT * FROM {$this->tbName} ORDER BY message_id ASC LIMIT 1"; 71 $row = $this->db->getRow($sql); 72 return $row['message_id']; 73 } 74 public function getMaxMsgId(){ 75 $sql = "SELECT * FROM {$this->tbName} ORDER BY message_id DESC LIMIT 1"; 76 $row = $this->db->getRow($sql); 77 return $row['message_id']; 78 } 79 80 } 81 ?>
http://www.cnblogs.com/huanying2015 博客随笔大多数文章均属原创,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利