You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
242 lines
6.2 KiB
242 lines
6.2 KiB
<?php
|
|
|
|
class DB
|
|
{
|
|
//私有的属性
|
|
private static $dbcon = false;
|
|
private $host;
|
|
private $port;
|
|
private $user;
|
|
private $pass;
|
|
private $db;
|
|
private $charset;
|
|
private $link;
|
|
|
|
//私有的构造方法
|
|
function __construct($config = array())
|
|
{
|
|
$this->host = isset($config['host']) ? $config['host'] : 'localhost';
|
|
$this->port = isset($config['port']) ? $config['port'] : '3306';
|
|
$this->user = isset($config['user']) ? $config['user'] : 'masadaroot';
|
|
$this->pass = isset($config['pass']) ? $config['pass'] : 'x6h5E5p#u8y';
|
|
$this->db = isset($config['db']) ? $config['db'] : 'appwms';
|
|
$this->charset = isset($arr['charset']) ? $arr['charset'] : 'utf8';
|
|
//连接数据库
|
|
$this->db_connect();
|
|
//选择数据库
|
|
$this->db_usedb();
|
|
//设置字符集
|
|
$this->db_charset();
|
|
}
|
|
|
|
//连接数据库
|
|
private function db_connect()
|
|
{
|
|
$this->link = mysqli_connect($this->host . ':' . $this->port, $this->user, $this->pass);
|
|
if (!$this->link) {
|
|
echo "数据库连接失败<br>";
|
|
echo "错误编码" . mysqli_errno($this->link) . "<br>";
|
|
echo "错误信息" . mysqli_error($this->link) . "<br>";
|
|
exit;
|
|
}
|
|
}
|
|
|
|
//设置字符集
|
|
private function db_charset()
|
|
{
|
|
mysqli_query($this->link, "set names {$this->charset}");
|
|
}
|
|
|
|
//选择数据库
|
|
private function db_usedb()
|
|
{
|
|
mysqli_query($this->link, "use {$this->db}");
|
|
}
|
|
|
|
//私有的克隆
|
|
private function __clone()
|
|
{
|
|
die('clone is not allowed');
|
|
}
|
|
|
|
//公用的静态方法
|
|
public static function getIntance()
|
|
{
|
|
if (self::$dbcon == false) {
|
|
self::$dbcon = new self;
|
|
}
|
|
return self::$dbcon;
|
|
}
|
|
|
|
//执行sql语句的方法
|
|
public function query($sql)
|
|
{
|
|
$res = mysqli_query($this->link, $sql);
|
|
if (!$res) {
|
|
echo "sql语句执行失败<br>";
|
|
echo "错误编码是" . mysqli_errno($this->link) . "<br>";
|
|
echo "错误信息是" . mysqli_error($this->link) . "<br>";
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
//打印数据
|
|
public function p($arr)
|
|
{
|
|
echo "<pre>";
|
|
print_r($arr);
|
|
echo "</pre>";
|
|
}
|
|
|
|
public function v($arr)
|
|
{
|
|
echo "<pre>";
|
|
var_dump($arr);
|
|
echo "</pre>";
|
|
}
|
|
|
|
//获得最后一条记录id
|
|
public function getInsertid()
|
|
{
|
|
return mysqli_insert_id($this->link);
|
|
}
|
|
|
|
/**
|
|
* 查询某个字段
|
|
* @param
|
|
* @return string or int
|
|
*/
|
|
public function getOne($sql)
|
|
{
|
|
$query = $this->query($sql);
|
|
return mysqli_free_result($query);
|
|
}
|
|
|
|
//获取一行记录,return array 一维数组
|
|
public function getRow($sql, $type = "assoc")
|
|
{
|
|
$query = $this->query($sql);
|
|
if (!in_array($type, array("assoc", 'array', "row"))) {
|
|
die("mysqli_query error");
|
|
}
|
|
$funcname = "mysqli_fetch_" . $type;
|
|
return $funcname($query);
|
|
}
|
|
|
|
//获取一条记录,前置条件通过资源获取一条记录
|
|
public function getFormSource($query, $type = "assoc")
|
|
{
|
|
if (!in_array($type, array("assoc", "array", "row"))) {
|
|
die("mysqli_query error");
|
|
}
|
|
$funcname = "mysqli_fetch_" . $type;
|
|
return $funcname($query);
|
|
}
|
|
|
|
//获取多条数据,二维数组
|
|
public function getAll($sql)
|
|
{
|
|
$query = $this->query($sql);
|
|
$list = array();
|
|
while ($r = $this->getFormSource($query)) {
|
|
$list[] = $r;
|
|
}
|
|
return $list;
|
|
}
|
|
|
|
/**
|
|
* 定义添加数据的方法
|
|
* @param string $table 表名
|
|
* @param string orarray $data [数据]
|
|
* @return int 最新添加的id
|
|
*/
|
|
public function insert($table, $data)
|
|
{
|
|
//遍历数组,得到每一个字段和字段的值
|
|
$key_str = '';
|
|
$v_str = '';
|
|
foreach ($data as $key => $v) {
|
|
if (empty($v)) {
|
|
die("error");
|
|
}
|
|
//$key的值是每一个字段s一个字段所对应的值
|
|
$key_str .= $key . ',';
|
|
$v_str .= "'$v',";
|
|
}
|
|
$key_str = trim($key_str, ',');
|
|
$v_str = trim($v_str, ',');
|
|
//判断数据是否为空
|
|
$sql = "insert into $table ($key_str) values ($v_str)";
|
|
$this->query($sql);
|
|
//返回上一次增加操做产生ID值
|
|
return $this->getInsertid();
|
|
}
|
|
|
|
/*
|
|
* 删除一条数据方法
|
|
* @param1 $table, $where=array('id'=>'1') 表名 条件
|
|
* @return 受影响的行数
|
|
*/
|
|
public function deleteOne($table, $where)
|
|
{
|
|
if (is_array($where)) {
|
|
foreach ($where as $key => $val) {
|
|
$condition = $key . '=' . $val;
|
|
}
|
|
} else {
|
|
$condition = $where;
|
|
}
|
|
$sql = "delete from $table where $condition";
|
|
$this->query($sql);
|
|
//返回受影响的行数
|
|
return mysqli_affected_rows($this->link);
|
|
}
|
|
|
|
/*
|
|
* 删除多条数据方法
|
|
* @param1 $table, $where 表名 条件
|
|
* @return 受影响的行数
|
|
*/
|
|
public function deleteAll($table, $where)
|
|
{
|
|
if (is_array($where)) {
|
|
foreach ($where as $key => $val) {
|
|
if (is_array($val)) {
|
|
$condition = $key . ' in (' . implode(',', $val) . ')';
|
|
} else {
|
|
$condition = $key . '=' . $val;
|
|
}
|
|
}
|
|
} else {
|
|
$condition = $where;
|
|
}
|
|
$sql = "delete from $table where $condition";
|
|
$this->query($sql);
|
|
//返回受影响的行数
|
|
return mysqli_affected_rows($this->link);
|
|
}
|
|
|
|
/**
|
|
* [修改操作description]
|
|
* @param [type] $table [表名]
|
|
* @param [type] $data [数据]
|
|
* @param [type] $where [条件]
|
|
* @return [type]
|
|
*/
|
|
public function update($table, $data, $where)
|
|
{
|
|
//遍历数组,得到每一个字段和字段的值
|
|
$str = '';
|
|
foreach ($data as $key => $v) {
|
|
$str .= "$key='$v',";
|
|
}
|
|
$str = rtrim($str, ',');
|
|
//修改SQL语句
|
|
$sql = "update $table set $str where $where";
|
|
$this->query($sql);
|
|
//返回受影响的行数
|
|
return mysqli_affected_rows($this->link);
|
|
}
|
|
}
|
|
|
|
?>
|