热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql操作类php_php中mysql数据库操作类李盛鹏博客园

本白演示的代码属于较为简单的数据库封装类,较适合初学。因为水平有限,见谅。接着稍微说说整体的思路。整个类的封装,包含一个连接数据库的私有属

本白演示的代码属于较为简单的数据库封装类,较适合初学。因为水平有限,见谅。

接着稍微说说整体的思路。整个类的封装,包含一个连接数据库的私有属性$conn和若干操作函数。$conn在对象实例化的时候,由构造函数处理传入的参数后返回一个资源型的连接句柄。而后即可通过调用该实例化的对象的相应方法对数据库进行增删查改的操作。

talk less and show code:

/**

*以下代码用于数据库操作类的封装

*

* @author rex

* @version 1.0

* @since 2015

*/

class Mysql{

//数据库连接返回值

private $conn;

/**

* [构造函数,返回值给$conn]

* @param [string] $hostname [主机名]

* @param [string] $username[用户名]

* @param [string] $password[密码]

* @param [string] $dbname[数据库名]

* @param [string] $charset[字符集]

* @return [null]

*/

function __construct($hostname,$username,$password,$dbname,$charset='utf8'){

$conn = @mysql_connect($hostname,$username,$password);

if(!$conn){

echo '连接失败,请联系管理员';

exit;

}

$this->conn = $conn;

$res = mysql_select_db($dbname);

if(!$res){

echo '连接失败,请联系管理员';

exit;

}

mysql_set_charset($charset);

}

function __destruct(){

mysql_close();

}

/**

* [getAll 获取所有信息]

* @param [string] $sql [sql语句]

* @return [array] [返回二维数组]

*/

function getAll($sql){

$result = mysql_query($sql,$this->conn);

$data = array();

if($result && mysql_num_rows($result)>0){

while($row = mysql_fetch_assoc($result)){

$data[] = $row;

}

}

return $data;

}

/**

* [getOne 获取单条数据]

* @param [string] $sql [sql语句]

* @return [array] [返回一维数组]

*/

function getOne($sql){

$result = mysql_query($sql,$this->conn);

$data = array();

if($result && mysql_num_rows($result)>0){

$data = mysql_fetch_assoc($result);

}

return $data;

}

/**

* [getOne 获取单条数据]

* @param [string] $table [表名]* @param [string] $data [由字段名当键,属性当键值的一维数组]

* @return [type] [返回false或者插入数据的id]

*/

function insert($table,$data){

$str = '';

$str .="INSERT INTO `$table` ";

$str .="(`".implode("`,`",array_keys($data))."`) ";

$str .=" VALUES ";

$str .= "('".implode("','",$data)."')";

$res = mysql_query($str,$this->conn);

if($res && mysql_affected_rows()>0){

return mysql_insert_id();

}else{

return false;

}

}

/**

* [update 更新数据库]

* @param [string] $table [表名]

* @param [array] $data [更新的数据,由字段名当键,属性当键值的一维数组]

* @param [string] $where [条件,‘字段名’=‘字段属性’]

* @return [type] [更新成功返回影响的行数,更新失败返回false]

*/

function update($table,$data,$where){

$sql = 'UPDATE '.$table.' SET ';

foreach($data as $key => $value){

$sql .= "`{$key}`='{$value}',";

}

$sql = rtrim($sql,',');

$sql .= " WHERE $where";

$res = mysql_query($sql,$this->conn);

if($res && mysql_affected_rows()){

return mysql_affected_rows();

}else{

return false;

}

}

/**

* [delete 删除数据]

* @param [string] $table [表名]

* @param [string] $where [条件,‘字段名’=‘字段属性’]

* @return [type] [成功返回影响的行数,失败返回false]

*/

function del($table,$where){

$sql = "DELETE FROM `{$table}` WHERE {$where}";

$res = mysql_query($sql,$this->conn);

if($res && mysql_affected_rows()){

return mysql_affected_rows();

}else{

return false;

}

}

}

实例化类:

//包含数据库操作类文件

include 'mysql.class.php';

//设置传入参数

$hostname='localhost';

$username='root';

$password='123456';

$dbname='aisi';

$charset = 'utf8';

//实例化对象

$db = new Mysql($hostname,$username,$password,$dbname);

//获取一条数据

$sql = "SELECT count(as_article_id) as count FROM as_article where as_article_type_id=1";

$count = $db->getOne($sql);

//获取多条数据

$sql = "SELECT * FROM as_article where as_article_type_id=1 order by as_article_addtime desc limit $start,$limit";

$service = $db->getAll($sql);

//插入数据

$arr = array(

'as_article_title'=>'数据库操作类',

'as_article_author'=>'rex',

);

$res = $db->insert('as_article',$arr);

//更新数据

$arr = array(

'as_article_title'=>'实例化对象',

'as_article_author'=>'Lee',

);

$where = "as_article_id=1";

$res = $db->update('as_article',$arr,$where);

//删除数据

$where = "as_article_id=1";

$res = $db->del('as_article',$where);

?>

演示完代码,大概说几句。

getOne方法传入$sql的sql语句用于查询单条数据并返回一维数组;getAll方法同样传入sql语句,用于查询多条数据,并返回二维数组;insert方法传入表名和关联数组,返回boolen型或者插入数据对应索引;update方法传入表名、关联数组和条件,返回boolen或者影响的行数;del方法传入表名和条件,返回boolen型。

that's all,but not the all.有兴趣的朋友可以把getOne和getAll直接传入sql语句作为参数的方式再优化一下。



推荐阅读
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 在金融和会计领域,准确无误地填写票据和结算凭证至关重要。这些文件不仅是支付结算和现金收付的重要依据,还直接关系到交易的安全性和准确性。本文介绍了一种使用C语言实现小写金额转换为大写金额的方法,确保数据的标准化和规范化。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • Codeforces Round #566 (Div. 2) A~F个人题解
    Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 在使用SQL Server进行动态SQL查询时,如果遇到LIKE语句无法正确返回预期结果的情况,通常是因为参数传递方式不当。本文将详细探讨这一问题,并提供解决方案及相关的技术背景。 ... [详细]
author-avatar
青椒盐水_205
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有