简单的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 相关文章推荐
PHP 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
PHP实现多条件查询实例代码
Jul 17 PHP
PHP在特殊字符前加斜杠的实现代码
Jul 17 PHP
基于PHP生成静态页的实现方法
May 10 PHP
PHP 解决session死锁的方法
Jun 20 PHP
php中的PHP_EOL换行符详细解析
Oct 26 PHP
PHP COOKIE及时生效的方法介绍
Feb 14 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
Apr 29 PHP
PHP的PDO常用类库实例分析
Apr 07 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
php设计模式之策略模式应用案例详解
Jun 17 PHP
laravel 实现设置时区的简单方法
Oct 10 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 常用字符串函数总结
2008/03/15 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
Zend Framework动作助手Redirector用法实例详解
2016/03/05 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
关于js类的定义
2011/06/28 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
2015/07/29 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
EJB的几种类型
2012/08/15 面试题
医学专业毕业生个人求职信
2013/12/25 职场文书
药店主任岗位责任制
2014/02/10 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
银行柜员工作心得体会
2016/01/23 职场文书
如何通过一篇文章了解Python中的生成器
2022/04/02 Python
如何基于python实现单目三维重建详解
2022/06/25 Python