简单的php数据库操作类代码(增,删,改,查)


Posted in PHP onApril 08, 2013

数据库操纵基本流程为:

1、连接数据库服务器

2、选择数据库

3、执行SQL语句

4、处理结果集

5、打印操作信息

其中用到的相关函数有

•resource mysql_connect ( [string server [, string username [, string password [, bool new_link [, int client_flags]]]]] )

连接数据库服务器
•resource mysql_pconnect ( [string server [, string username [, string password [, int client_flags]]]] )

连接数据库服务器,长连接
•int mysql_affected_rows ( [resource link_identifier] )取得最近一次与 link_identifier 关联的 INSERT,UPDATE 或 DELETE 查询所影响的记录行数。
•bool mysql_close ( [resource link_identifier] )如果成功则返回 TRUE,失败则返回 FALSE。
•int mysql_errno ( [resource link_identifier] )返回上一个 MySQL 函数的错误号码,如果没有出错则返回 0(零)。
•string mysql_error ( [resource link_identifier] )返回上一个 MySQL 函数的错误文本,如果没有出错则返回 ''(空字符串)。如果没有指定连接资源号,则使用上一个成功打开的连接从 MySQL 服务器提取错误信息。
•array mysql_fetch_array ( resource result [, int result_type] )返回根据从结果集取得的行生成的数组,如果没有更多行则返回 FALSE。
•bool mysql_free_result ( resource result )释放所有与结果标识符 result 所关联的内存。
•int mysql_num_fields ( resource result )返回结果集中字段的数目。
•int mysql_num_rows ( resource result )返回结果集中行的数目。此命令仅对 SELECT 语句有效。要取得被 INSERT,UPDATE 或者 DELETE 查询所影响到的行的数目,用 mysql_affected_rows()。
•resource mysql_query ( string query [, resource link_identifier] ) 向与指定的连接标识符关联的服务器中的当前活动数据库发送一条查询。如果没有指定 link_identifier,则使用上一个打开的连接。如果没有打开的连接,本函数会尝试无参数调用 mysql_connect() 函数来建立一个连接并使用之。查询结果会被缓存
代码如下:

class mysql {     private $db_host;       //数据库主机
     private $db_user;       //数据库登陆名
     private $db_pwd;        //数据库登陆密码
     private $db_name;       //数据库名
     private $db_charset;    //数据库字符编码
     private $db_pconn;      //长连接标识位
     private $debug;         //调试开启
     private $conn;          //数据库连接标识
     private $msg = "";      //数据库操纵信息
 //    private $sql = "";      //待执行的SQL语句
     public function __construct($db_host, $db_user, $db_pwd, $db_name, $db_chaeset = 'utf8', $db_pconn = false, $debug = false) {
         $this->db_host = $db_host;
         $this->db_user = $db_user;
         $this->db_pwd = $db_pwd;
         $this->db_name = $db_name;
         $this->db_charset = $db_chaeset;
         $this->db_pconn = $db_pconn;
         $this->result = '';
         $this->debug = $debug;
         $this->initConnect();
     }
     public function initConnect() {
         if ($this->db_pconn) {
             $this->conn = @mysql_pconnect($this->db_host, $this->db_user, $this->db_pwd);
         } else {
             $this->conn = @mysql_connect($this->db_host, $this->db_user, $this->db_pwd);
         }
         if ($this->conn) {
             $this->query("SET NAMES " . $this->db_charset);
         } else {
             $this->msg = "数据库连接出错,错误编号:" . mysql_errno() . "错误原因:" . mysql_error();
         }
         $this->selectDb($this->db_name);
     }
     public function selectDb($dbname) {
         if ($dbname == "") {
             $this->db_name = $dbname;
         }
         if (!mysql_select_db($this->db_name, $this->conn)) {
             $this->msg = "数据库不可用";
         }
     }
     public function query($sql, $debug = false) {
         if (!$debug) {
             $this->result = @mysql_query($sql, $this->conn);
         } else {
         }
         if ($this->result == false) {
             $this->msg = "sql执行出错,错误编号:" . mysql_errno() . "错误原因:" . mysql_error();
         }
 //        var_dump($this->result);
     }
     public function select($tableName, $columnName = "*", $where = "") {
         $sql = "SELECT " . $columnName . " FROM " . $tableName;
         $sql .= $where ? " WHERE " . $where : null;
         $this->query($sql);
     }
     public function findAll($tableName) {
         $sql = "SELECT * FROM $tableName";
         $this->query($sql);
     }
     public function insert($tableName, $column = array()) {
         $columnName = "";
         $columnValue = "";
         foreach ($column as $key => $value) {
             $columnName .= $key . ",";
             $columnValue .= "'" . $value . "',";
         }
         $columnName = substr($columnName, 0, strlen($columnName) - 1);
         $columnValue = substr($columnValue, 0, strlen($columnValue) - 1);
         $sql = "INSERT INTO $tableName($columnName) VALUES($columnValue)";
         $this->query($sql);
         if($this->result){
             $this->msg = "数据插入成功。新插入的id为:" . mysql_insert_id($this->conn);
         }
     }
     public function update($tableName, $column = array(), $where = "") {
         $updateValue = "";
         foreach ($column as $key => $value) {
             $updateValue .= $key . "='" . $value . "',";
         }
         $updateValue = substr($updateValue, 0, strlen($updateValue) - 1);
         $sql = "UPDATE $tableName SET $updateValue";
         $sql .= $where ? " WHERE $where" : null;
         $this->query($sql);
         if($this->result){
             $this->msg = "数据更新成功。受影响行数:" . mysql_affected_rows($this->conn);
         }
     }
     public function delete($tableName, $where = ""){
         $sql = "DELETE FROM $tableName";
         $sql .= $where ? " WHERE $where" : null;
         $this->query($sql);
         if($this->result){
             $this->msg = "数据删除成功。受影响行数:" . mysql_affected_rows($this->conn);
         }
     }
     public function fetchArray($result_type = MYSQL_BOTH){
         $resultArray = array();
         $i = 0;
         while($result = mysql_fetch_array($this->result, $result_type)){
             $resultArray[$i] = $result;
             $i++;
         }
         return $resultArray;
     }
 //    public function fetchObject(){
 //        return mysql_fetch_object($this->result);
 //    }
     public function printMessage(){
         return $this->msg;
     }
     public function freeResult(){
         @mysql_free_result($this->result);
     }
     public function __destruct() {
         if(!empty($this->result)){
             $this->freeResult();
         }
         mysql_close($this->conn);
     }
 }

调用代码如下

require_once 'mysql_V1.class.php';
 require_once 'commonFun.php';
 $db = new mysql('localhost', 'root', '', "test"); //select    查
 $db->select("user", "*", "username = 'system'");
 $result = $db->fetchArray(MYSQL_ASSOC);
 print_r($result);
 dump($db->printMessage());
 //insert    增
 //$userInfo = array('username'=>'system', 'password' => md5("system"));
 //$db->insert("user", $userInfo);
 //dump($db->printMessage());
 //update    改
 //$userInfo = array('password' => md5("123456"));
 //$db->update("user", $userInfo, "id = 2");
 //dump($db->printMessage());
 //delete    删
 //$db->delete("user", "id = 1");
 //dump($db->printMessage());
 //findAll   查询全部
 $db->findAll("user");
 $result = $db->fetchArray();
 dump($result);

ps,个人比较喜欢tp的dump函数,所以在commonFun.php文件中拷贝了友好打印函数。使用时将其改为print_r()即可。

PHP 相关文章推荐
用PHPdig打造属于你自己的Google[图文教程]
Feb 14 PHP
Mysql的GROUP_CONCAT()函数使用方法
Mar 28 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
Sep 09 PHP
php 无法加载mcrypt.dll的解决办法
Apr 03 PHP
php引用返回与取消引用的详解
Jun 08 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
PHP获取用户客户端真实IP的解决方案
Oct 10 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
PHPstorm快捷键(分享)
Jul 17 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
Nov 20 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 PHP
php判断目录存在的简单方法
Sep 26 PHP
PHP If Else(elsefi) 语句
Apr 07 #PHP
PHP插入排序实现代码
Apr 04 #PHP
php 无法加载mcrypt.dll的解决办法
Apr 03 #PHP
PHP常用的文件操作函数经典收藏
Apr 02 #PHP
精美漂亮的php分页类代码
Apr 02 #PHP
php更新mysql后获取影响的行数发生异常解决方法
Mar 28 #PHP
php页面跳转代码 输入网址跳转到你定义的页面
Mar 28 #PHP
You might like
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
jquery 上下滚动广告
2009/06/17 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
基于JS实现简单的样式切换效果代码
2015/09/04 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
python调用java的Webservice示例
2014/03/10 Python
Python中文编码那些事
2014/06/25 Python
python生成随机图形验证码详解
2017/11/08 Python
python计算日期之间的放假日期
2018/06/05 Python
python实现按长宽比缩放图片
2018/06/07 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
2019/06/21 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
python写日志文件操作类与应用示例
2019/07/01 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
filter使用python3代码进行迭代元素的实例详解
2020/12/03 Python
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
农民工创业典型事迹
2014/01/25 职场文书
整顿机关作风心得体会
2014/09/10 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
2015年社区计生工作总结
2015/04/21 职场文书