简单的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 相关文章推荐
NT IIS下用ODBC连接数据库
Oct 09 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
理解和运用PHP中的多态性[译]
Aug 02 PHP
PHP file_exists问题杂谈
May 07 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
PHP调用C#开发的dll类库方法
Jul 28 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
给WordPress的编辑后台添加提示框的代码实例分享
Dec 25 PHP
PHP设计模式之工厂模式详解
Oct 24 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
PHP常见的序列化与反序列化操作实例分析
Oct 28 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中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
php实现cookie加密的方法
2015/03/10 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
2013/08/22 Javascript
jquery实现鼠标滑过小图时显示大图的方法
2015/01/14 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
javascript入门之数组[新手必看]
2016/11/21 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
vue自定义指令的创建和使用方法实例分析
2018/12/04 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
如何使用webpack打包一个库library的方法步骤
2019/12/18 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
[53:52]OG vs EG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python聚类算法之基本K均值实例详解
2015/11/20 Python
python中 * 的用法详解
2019/07/10 Python
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
新闻学专业应届生求职信
2013/11/08 职场文书
电信专业毕业生推荐信
2013/11/18 职场文书
买房委托公证书
2014/04/08 职场文书
企业党员个人自我评价
2014/09/20 职场文书
2014基建处领导班子“四风”对照检查材料思想汇报
2014/10/04 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏
vue的项目如何打包上线
2022/04/13 Vue.js