<?php
/**
* PDO数据库操作函数库
*/
/**
* 数据库连接
* @param $db
* @return PDO
*/
function connect( $db )
{
$dsn = "{$db['type']}:host={$db['host']}; dbname={$db['name']}; charset={$db['charset']}; port={$db['port']}";//数据源
try {
//实例化PDO类,创建PDO对象
$pdo = new PDO($dsn, $db['user'], $db['pass']);
} catch (PDOException $e) {
die('数据库错误:'.$e->getMessage());
}
return $pdo;
}
/**
* 查询多条记录
* @param $db
* @param $table
* @param $fields
* @param string $where
* @return array
*/
function select($db,$table,$fields, $where='', $order='',$limit='') {
//连接pdo
$pdo = connect($db);
//创建SQL语句
$sql = 'SELECT ';
if (is_array($fields)) {
foreach ($fields as $field) {
$sql .= $field.', ';
}
} else {
$sql .= $fields;
}
$sql = rtrim(trim($sql),',');
$sql .= ' FROM '.$table;
//添加查询条件
if(is_array($where)){
$sql .= ' WHERE ';
foreach($where as $k=>$v){
$sql .= $k.'="'.$v.'" ,';
}
}
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql),',');
//添加排序条件
if(!empty($order)) {
$sql .= ' order by '.$order;
}
//添加分页条件
if(!empty($limit)) {
$sql .= ' limit '.$limit;
}
$sql .= ';';
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//执行查询操作
if($stmt->execute()){
if($stmt->rowCount()>0){
$stmt->setFetchMode(PDO::FETCH_ASSOC);
//返回一个二维数组
return $stmt->fetchAll();
}
} else {
return false;
}
}
/**
* 查询单条记录
* @param $db
* @param $table
* @param $fields
* @param string $where
* @return array
*/
function find($db,$table,$fields, $where='') {
//连接pdo
$pdo = connect($db);
//创建SQL语句
$sql = 'SELECT ';
if (is_array($fields)) {
foreach ($fields as $field) {
$sql .= $field.', ';
}
} else {
$sql .= $fields;
}
$sql = rtrim(trim($sql),',');
$sql .= ' FROM '.$table;
//添加查询条件
if(is_array($where)){
$sql .= ' WHERE ';
foreach($where as $k=>$v){
$sql .= $k.'="'.$v.'" ,';
}
}
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql),',');
$sql .= ' LIMIT 1;';
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//执行查询操作
if($stmt->execute()){
if($stmt->rowCount()>0){
$stmt->setFetchMode(PDO::FETCH_ASSOC);
return $stmt->fetch();
}
} else {
return false;
}
}
/**
* 新增数据
* @param $db
* @param $table
* @param $data
* @return bool
*/
function insert($db, $table, $data=[]){
//连接pdo
$pdo = connect($db);
//创建SQL语句
$sql = "INSERT INTO {$table} SET ";
//组装插入语句
if(is_array($data)){
foreach ($data as $k=>$v) {
$sql .= $k.'="'.$v.'", ';
}
}else{
return false;
}
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql),',').';';
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//执行新增操作
if($stmt->execute()){
if($stmt->rowCount()>0){
return true;
}
} else {
return false;
}
}
/**
* 更新数据
* @param $db
* @param $table
* @param $data
* @return bool
*/
function update($db,$table,$data=[], $where='') {
//连接pdo
$pdo = connect($db);
//创建SQL语句
$sql = "UPDATE {$table} SET ";
//组装修改语句
if(is_array($data)){
foreach ($data as $k=>$v) {
$sql .= $k.'="'.$v.'", ';
}
}
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql),',');
//更新条件
if(is_array($where)){
$sql .= ' WHERE ';
foreach ($where as $w_k=>$w_v) {
$sql .= $w_k.'="'.$w_v.'", ';
}
}else{
return false;
}
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql),',').';';
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//执行新增操作
if($stmt->execute()){
if($stmt->rowCount()>0){
return true;
}
} else {
return false;
}
}
/**
* 删除记录
* @param $db
* @param $table
* @param string $where
* @return bool
*/
function delete($db,$table,$where=''){
//连接pdo
$pdo = connect($db);
//创建SQL语句
$sql = "DELETE FROM {$table} ";
//删除条件
if(is_array($where)){
$sql .= ' WHERE ';
foreach ($where as $k=>$v) {
$sql .= $k.'="'.$v.'", ';
}
}else{
return false;
}
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql),',').';';
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//执行删除操作
if($stmt->execute()){
if($stmt->rowCount()>0){
return true;
}
} else {
return false;
}
}
/**
* 统计数量
* @param $pdo
* @param $table
* @param string $where
* @return number
*/
function count_number($db,$table,$where){
//连接pdo
$pdo = connect($db);
//创建SQL语句
$sql = 'SELECT count(*) as count_number FROM '.$table;
if(is_array($where)){
$sql .= ' WHERE ';
foreach ($where as $k=>$v) {
$sql .= $k.'="'.$v.'", ';
}
}
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql),',').';';
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//执行查询操作
if($stmt->execute()){
if($stmt->rowCount()>0){
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$rows = $row['count_number'];
return $rows;
}
} else {
return false;
}
}