配置文件部分
<?php
/**
* Created by wangsir
* User: Administrator
* Date: 14-12-22
* Time: 上午9:29
*/
define('DB_MS','mysql'); //服务器
define('DB_USER','root'); //数据库用户名
define('DB_PASSWD','111'); //数据库密码
define('DB_NAME','bbs'); //使用数据库
define('DB_HOST','localhost'); //数据库服务器
define('DB_COD','utf8'); //数据库编码
define('DB_DSN',DB_MS.':host='.DB_HOST.';dbname='.DB_NAME);
类
<?php
/**
* Created by wangsir.
* Date: 14-12-22
* Time: 上午9:22
* 本扩展自 PHP 5.5.0 起已废弃,并在将来会被移除。
*/
header("Content-Type:text/html;charset=utf-8");
//包含配置文件
require_once("config.ini.php");
class MySqli
{
public $conn; //保存数据库连接资源
public $host; //服务器
public $username; //数据库用户名
public $password; //数据密码
public $dbname; //数据库名
public $cod; //数据库编码
public $dataTable; //数据库表
public $sql; //sql语句
public $where; //条件
public $limit; //几条数据
public $select; //查询
//数据库连接
//这里采用读取配置文件的方式获取基本信息 也可以在构造函数传数组来解决同样的问题
public function __construct($host=DB_HOST ,$username=DB_USER,$passwd=DB_PASSWD,$dbname=DB_NAME,$cod=DB_COD)
{
//获取数据库长连接,因为有长连接了所以就不在做单例模式
$this->conn = new mysqli($host,$username,$passwd);
$this->selectDb($dbname);
$this->coding($cod);
}
//设置编码格式
public function coding($cod)
{
mysql_query("SET CHARACTER SET ".$cod);
}
//读取某个库
public function selectDb($dbname)
{
mysql_select_db($dbname,$this->conn);
}
//要查询什么字段 这个事查询的最后一步
public function select($field="*")
{
$this->sql = "select ".$field." from ".$this->dataTable.$this->where.$this->limit;
}
//要使用哪个表
public function table($tableName)
{
$this->dataTable = $tableName;
return $this;
}
//执行操作
public function query()
{
$res = mysql_query($this->sql);
//是资源类型代表查询 返回结果数组
if(is_resource($res))
{
//将返回二维数组
while($row = mysql_fetch_assoc($res))
{
$arr[] = $row;
}
//返回一维数组
foreach($arr as $key=>$value)
{
$ke = $value;
}
return $ke;
}
}
//取得几个值 limit
public function limit($limit)
{
$this->limit = ' limit '.$limit;
return $this;
}
//where条件
public function where($where)
{
$this->where = ' where '.$where;
return $this;
}
//insert
public function insert($insert)
{
//如果是索引数组
if($this->is_assoc($insert))
{
//获取数组的key 也就是字段值
$key = array_keys($insert);
$value = array_values($insert);
for($i=0,$j=0;$i<count($key),$j<count($value);$i++,$j++)
{
$column.=$key[$i].',';
$val.=$value[$j].',';
}
$col = rtrim($column,',');
$value = rtrim($val,',');
$this->sql = "insert into ".$this->dataTable."($col) values($value)";
}else{
//如果不是索引数组 那么直接将数组转化为字符串
$value = implode(',',$insert);
$this->sql = "insert into ".$this->dataTable." values($value)";
}
}
//修改
public function update($update)
{
foreach($update as $key=>$value)
{
$data.=$key."=".$value.',';
}
$values = rtrim($data,',');
$this->sql = "UPDATE ".$this->dataTable." SET $values ".$this->where;
}
//删除
public function delete()
{
$this->sql = "DELETE FROM ".$this->dataTable.$this->where;
}
//判断是否为索引数组
public function is_assoc($array) {
if(is_array($array)) {
$keys = array_keys($array);
return $keys != array_keys($keys);
}
return false;
}
}
//$b = array('CategoryID'=>9,'Name'=>11,'Description'=>22,'Priority'=>35);
//$b = array(4,5,6,7);
//$a = new MySqli();
//查询
//$sql = $a->table("guagua_category")->where('CategoryID=1')->limit(3)->select();
//$arr = $a->query();
//插入
//$sql = $a->table("guagua_category")->insert($b);
//$a->query();
//修改
//$sql = $a->table("guagua_category")->where("CategoryID=1")->update($b);
//$a->query();
//删除
//$sql = $a->table("guagua_category")->where("CategoryID=9")->delete();
//$a->query();