简单的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 相关文章推荐
优化NFR之一 --MSSQL Hello Buffer Overflow
Oct 09 PHP
PHP 文件类型判断代码
Mar 13 PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 PHP
使用HMAC-SHA1签名方法详解
Jun 26 PHP
浅析memcache启动以及telnet命令详解
Jun 28 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
完整删除ecshop中获取店铺信息的API
Dec 24 PHP
PHP基于回溯算法解决n皇后问题的方法示例
Nov 07 PHP
PHP实现生成数据字典功能示例
May 24 PHP
laravel 查询数据库获取结果实现判断是否为空
Oct 24 PHP
thinkphp5框架路由原理与用法详解
Feb 11 PHP
php在linux环境中如何使用redis详解
Dec 15 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
JQuery 绑定事件时传递参数的实现方法
2009/10/13 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
js判断iframe内的网页是否滚动到底部触发事件
2014/03/18 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
ES6学习之变量的两种命名方法示例
2017/07/18 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
浅谈对于“不用setInterval,用setTimeout”的理解
2019/08/28 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
在win和Linux系统中python命令行运行的不同
2016/07/03 Python
Python实现按逗号分隔列表的方法
2018/10/23 Python
对python中数组的del,remove,pop区别详解
2018/11/07 Python
python中比较两个列表的实例方法
2019/07/04 Python
Django REST framework 视图和路由详解
2019/07/19 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
印度网上药店:1mg
2017/10/13 全球购物
DBA数据库管理员JAVA程序员架构师必看
2016/02/07 面试题
应届生简历中的自我评价
2014/01/13 职场文书
市场营销管理毕业生自荐信
2014/03/03 职场文书
房屋转让协议书
2014/04/11 职场文书
2014年社区工作总结
2014/11/18 职场文书
社团招新宣传语
2015/07/13 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android