实例
/** PDO数据库操作函数库 **/
//连接数据库
if (!function_exists('connect'))//检测connect函数是否存在(或被定义)是继续执行
{
/**
* 连接数据库
* @param [type] $dbname
* @param string $type
* @param string $host
* @param string $charset
* @param integer $post
* @param string $user
* @param string $pass
* @return [type] PDO
*/
function connect($dbname,$type='mysql',$host='127.0.0.1',$charset='utf8',$port=3306,$user='root',$pass='root')
{
$dsn = "{$type}:host={$host}; dbname={$dbname}; charset={$charset}; port={$port}";//数据源
$userName = $user; //数据库用户名
$password = $pass; //数据库用户密码
//配置连接属性
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, //设置错误模式
PDO::ATTR_CASE => PDO::CASE_NATURAL, //数据表字段保持不变
PDO::ATTR_EMULATE_PREPARES => true, //启用PDO模拟
PDO::ATTR_PERSISTENT => true, //启用持久性连接
];
try {
//实例化PDO类,创建PDO对象
$pdo = new PDO($dsn, $userName, $password, $options);
} catch (PDOException $e) {
die('Connect ERROR!:'.$e->getMessage());
}
return $pdo;
}
}
//新增数据
if (!function_exists('insert'))
{
/**
* [insert description]
* @param [type] $pdo
* @param [type] $table
* @param array $data
* @return [type] bool
*/
function insert($pdo,$table,$data=[])
{
//创建SQL语句
$sql = "INSERT IGNORE {$table} SET ";
//foreach()方法用于调用数组的每个元素,并将元素传递给回调函数
//循环迭代,$data数组元素的值就会被赋值给 $field变量,并且数组指针会逐一地移动,直到最后一个数组元素。
foreach (array_keys($data) as $field) {
$sql .= $field. '=:'.$field.',';
}
//去掉尾部的逗号,并添加分号结束
$sql = rtrim(trim($sql),',').';';
// die($sql);//测试
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//绑定参数到预处理对象
foreach ($data as $field => $value) {
$stmt->bindValue(":{$field}",$value);
}
//执行新增操作
if ($stmt->execute()) {
if ($stmt->rowCount() > 0) {
return true;
}
} else {
return false;
}
}
}
//更新数据
if (!function_exists('update'))
{
/**
* 更新数据
* @param [type] $pdo [description]
* @param [type] $table [description]
* @param array $data [description]
* @param string $where [description]
* @return [type] [description]
*/
function update($pdo,$table,$data=[],$where='')
{
//创建SQL语句
$sql = "UPDATE {$table} SET ";
foreach (array_keys($data) as $field) {
$sql .= $field.'=:'.$field.', ';
}
//rtrim() 函数移除字符串右侧的空白字符或其他预定义字符。
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql),',');
// die($sql); 测试用
//添加更新条件
if(!empty($where)) {
$sql .= ' WHERE '. $where;
}else{
exit('条件不能为空');
}
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//绑定参数到预处理语句
foreach ($data as $field => $value) {
$stmt->bindValue(":{$field}",$value);
}
//执行更新操作
if ($stmt->execute()) {
//rowCount()方法获取sql查询返回结果记录总条数
if ($stmt->rowCount() > 0) {
return true;
}
} else {
return false;
}
}
}
//查询单条数据
if (!function_exists('find'))
{
/**
* 查询单条数据
* @param [type] $pdo [description]
* @param [type] $table [description]
* @param [type] $fields [description]
* @param string $where [description]
* @return [type] bool [description]
*/
function find($pdo,$table,$fields,$where='')
{
//创建SQL语句
$sql = "SELECT ";
if (is_array($fields)) {
foreach ($fields as $field) {
$sql .= $field.', ';
}
} else {
$sql .= $fields;
}
//去掉$fieds后面的逗号
$sql = rtrim(trim($sql),',');
$sql .= ' FROM '.$table;
//添加查询条件
if(!empty($where)) {
$sql .= ' WHERE '. $where;
}
$sql .= ' LIMIT 1';
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql),',').';';
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//执行查询操作
if($stmt->execute()){
if($stmt->rowCount()>0){
$stmt->setFetchMode(PDO::FETCH_ASSOC);
return $stmt->fetch();
}
} else {
return false;
}
}
}
//查询多条数据
if(!function_exists('select'))
{
/**
* 查询多条数据
* @param [type] $pdo [description]
* @param [type] $table [description]
* @param [type] $fields [description]
* @param string $where [description]
* @param string $order [description]
* @return [type] [description]
*/
function select($pdo,$table,$fields,$where='',$order='') {
//创建SQL语句
$sql = "SELECT ";
if(is_array($fields)) {
foreach ($fields as $field) {
$sql .= $field.',';
}
} else {
$sql .= $fields;
}
$sql = rtrim(trim($sql),',');
$sql .= " FROM ". $table;//FROM关键词查询的是数据库中的表名
//添加查询条件
if(!empty($where)) {
$sql .= ' WHERE '. $where;
}
//添加排序条件
if(!empty($order)) {
$sql .= " order by ". $order;
}
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql),',').';';
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//执行查询操作
if($stmt->execute()) {
if($stmt->rowCount() > 0) {
$stmt->setFetchMode(PDO::FETCH_ASSOC);
//返回一个二维数组
return $stmt->fetchAll();
}
} else {
return false;
}
}
}
//删除数据
if(!function_exists('delete'))
{
/**
* 删除数据
* @param [type] $pdo [description]
* @param [type] $table [description]
* @param string $where [description]
* @return [type] [description]
*/
function delete($pdo,$table,$where='') {
//创建SQL语句
$sql = "DELETE FROM {$table} ";
//添加删除条件
if(!empty($where)) {
$sql .= ' WHERE '.$where;
} else {
exit('条件不能为空');
}
//去掉尾部的逗号,并添加分号结束
$sql = rtrim(trim($sql,',').';');
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//执行删除操作
if($stmt->execute()) {
if($stmt->rowCount()>0) {
return true;
}
} else {
return false;
}
}
}
?>
运行实例 »
点击 "运行实例" 按钮查看在线实例