操作类

//作者:熊毅

//版本:2.0(发行版)

//可以自由转载,修改请通知我scxy78@yeah.net

//转载请保留以上声明

//使用说明:

//该类完全按照ADO的习惯书写的,用过ASP的人都觉得ASP连接数据库比好用(这是我的感觉),

//但PHP得一个一个API地写,挺累,该类做了完全的封装

//创建类的实例时可以指定一个数据库表和选择的数据库,如:new MySQLDB("table","database");

//查询数据时后可以用GetValue得到相应的值,既可以是字段名也可以是已0开始的序号

//插入新值,先用AddNew后使用SetValue相应的字段名或序号和字段值,在用Update添加

//编辑时用Edit指定编辑记录的条件在使用SetValue,最后用Update添加

//在类使用过程中,sTName记录上次使用的数据库表名,当指定后可以直接使用,以后的操作默认在该表

//上进行操作,当然也可以每次指定特殊的表进行操作

//nErr指示是否操作出错,sErr记录最后一次出错的错误代码,记录了明确的有哪个函数引起的错误

//错误之处请指正

//欢迎来信与我交流编程经验:scxy78@yeah.net

//我的CSDN:用户号:scxy;呢称:小熊,请多关照

//可以自由转载,修改请通知我scxy78@yeah.net

//转载请保留以上声明

var $host="localhost";        //主机名

var $user="boot";           //用户名

var $password="oaserver";   //用户密码

var $linkid;                 //连接值

var $dbid;                   //数据库选择的结果值

var $sTName;                  //指定当前操作的数据库表

var $sErr;                   //错误代码

var $nErr;                   //指示是否有错误存在,0无错误,1有错误

var $nResult;                //查询结果值

var $aFName;                 //保存FieldsName的数组

var $nRows;                  //查询结果中的行数

var $nCols;                  //查询结果中的列数

var $aNew;                   //添加在AddNew函数后的数据,以数组形式保存

var $NewEdit;                  //判断当前是否在进行添加操作,0表示没有,1表示在进行添加,2表示编辑

var $sEditCon;               //指定编辑记录的条件

var $nOffset;                //记录偏移量

var $EOF;                     //标记是否到记录集尾

var $sSQL;                    //最后一条执行的SQL语句

//执行Update所要用到的全局变量

var $sName;                   //字段名

var $sValue;                  //字段值AddNew时用

var $sEdit;                   //字段值Edit时用

function Initialize()

{

$this->nErr=0;

$this->NewEdit=0;

$this->nResult=-1;

$this->nCols=0;

$this->nRows=0;

$this->nOffset=0;

$this->EOF=true;

$this->sName="";

$this->sValue="#@!";

$this->sEdit="#@!";

unset($this->aFName);

unset($this->aNew);

}

function MySqlDB($TableName="",$database="slt")  //构造函数

{

$this->Initialize();

$this->sTName=$TableName;

$this->linkid=mysql_connect($host,$user,$password);

if(!$this->linkid)

{

$this->nErr=1;

$this->sErr="MySqlDB:数据库连接出错,请启动服务!";

return;

}

$this->dbid=mysql_select_($database);

if(!$this->dbid)

{

$this->nErr=1;

$this->sErr="MySqlDB:选择的数据库".$database."不存在!";

return;

}

}

function IsEmpty($Value)

{

if(is_string($Value)&&empty($Value))

return true;

return false;

}

function Destroy()          //数据清除处理

{

mysql_query("commit");

mysql_close();

}

function PrintErr()

{

if($this->nErr==1)

{

echo($this->sErr."

");

}

else

{

echo("没有错误

");

}

}

function Execute($SQL)  //直接执行SQL语句

{

if(empty($SQL))

{

$this->nErr=1;

$this->sErr="Execute:执行语句不能为空!";

return false;

}

$this->sSQL=$SQL;

if(!mysql_query($SQL))

{

$this->nErr=1;

$this->sErr="Execute:SQL语句:".$SQL."

MySql错误:".mysql_error();

return false;

}

return true;

}

function Query($TableName="",$SQL="*",$Condition="",$Order="",$Sequenc="") //在数据库里执行查询

{

$this->Initialize();

if(!empty($TableName))

$this->sTName=$TableName;

$strSQL="select ".$SQL." from ".$this->sTName;

if(!empty($Condition))

$strSQL=$strSQL." where ".$Condition;

if(!empty($Order))

$strSQL=$strSQL." order by ".$Order;

if(!empty($Sequenc))

$strSQL=$strSQL." ".$Sequenc;

$this->sSQL=$strSQL;

if(!$this->nResult=mysql_query($strSQL))

{

$this->nErr=1;

$this->sErr="Query:SQL语句:".$strSQL."

MySql错误:".mysql_error()."

";

return;

}

$this->nOffset=0;

$this->nRows=mysql_num_rows($this->nResult);

$this->nCols=mysql_num_fields($this->nResult);

if($this->nRows>0)

$this->EOF=false;

else

$this->EOF=true;

unset($this->aFName);

$this->aFName=array();

for($i=0;$inCols;$i++)

$this->aFName[$i]=strtolower(mysql_field_name($this->nResult,$i));

}

function MoveNext()

{

if($this->EOF)

{

$this->nErr=1;

$this->sErr="MoveNext:已经移到记录集末尾!";

return;

}

$this->nOffset++;

if($this->nOffset>=$this->nRows)

$this->EOF=true;

}

function MoveTo($Offset)

{

if(empty($Offset))

{

$this->nErr=1;

$this->sErr="MoveTo:必须指定偏移量! ";

return;

}

if(!$this->nResult)

{

$this->nErr=1;

$this->sErr="MoveTo:请先执行查询:Query";

return;

}

$this->nOffset=$Offset;

}

//得到指定行的指定列的值,返回字符串

//如果不指定Offset将取得下一行的值

//如果不指定nFields将取得该行的值,并已数组形式返回

function GetValue($nFields=-1,$Offset=-1)

{

if($this->nResult==-1)

{

$this->nErr=1;

$this->sErr="GetValue:请先执行Query()函数!";

return;

}

if($Offset>-1)

{

$this->nOffset=$Offset;

if($this->nOffset>=$this->nRows)

{

$this->nErr=1;

$this->sErr="GetValue:所要求的偏移量太大,无法达到!";

return;

}

}

if(!@mysql_data_seek($this->nResult,$this->nOffset))

{

$this->nErr=1;

$this->sErr="GetValue:请求不存在的记录!";

return;

}

$aResult=mysql_fetch_row($this->nResult);

if(is_int($nFields)&&$nFields>-1)

{

if($nFileds>$this->nCols)

{

$this->nErr=1;

$this->sErr="GetValue:所请求的列值大于实际的列值!";

return;

}

return $aResult[$nFields];

}

if(is_string($nFields))

{

$nFields=strtolower($nFields);

for($i=0;$inCols;$i++)

{

if($this->aFName[$i]==$nFields)

break;

}

if($i==$this->nCols)

{

$this->nErr=1;

$this->sErr="GetValue:所请求的列不存在,请仔细检查!";

return;

}

return $aResult[$i];

}

return $aResult;

}

function AddNew($TableName="")  //标志开始添加数据

{

$this->Initialize();

if(!empty($TableName))

$this->sTName=$TableName;

if($this->NewEdit>0)

{

$this->nErr=1;

$this->sErr="AddNew:你正在对数据库进行添加或更新操作!";

return;

}

if(empty($this->sTName))

{

$this->nErr=1;

$this->sErr="AddNew:想要添加的数据库表为空,可以在构造时指定,也可在AddNew()时指定!";

return;

}

unset($this->aNew);

$this->aNew=array();

$this->NewEdit=1;

$strSQL="select * from ".$this->sTName;

$this->sSQL=$strSQL;

if(!$this->nResult=mysql_query($strSQL))

{

$this->nErr=1;

$this->sErr="AddNew:SQL语句:".strSQL."

MySql错误:".mysql_error();

return;

}

$this->nCols=mysql_num_fields($this->nResult);

unset($this->aFName);

$this->aFName=array();

for($i=0;$inCols;$i++)

$this->aFName[$i]=strtolower(mysql_field_name($this->nResult,$i));

}

function Edit($Condition="",$TableName="")  //对指定数据库表进行编辑

{

$this->Initialize();

if(!empty($TableName))

$this->sTName=$TableName;

$this->sEditCon=$Condition;

if(empty($this->sTName))

{

$this->nErr=1;

$this->sErr="Edit:在编辑前请先指定数据库表!";

return;

}

unset($this->aNew);

$this->aNew=array();

$this->NewEdit=2;

$strSQL="select * from ".$this->sTName;

$this->sSQL=$strSQL;

if(!$this->nResult=mysql_query($strSQL))

{

$this->nErr=1;

$this->sErr="Edit:SQL语句:".strSQL."

MySql错误:".mysql_error();

return;

}

$this->nCols=mysql_num_fields($this->nResult);

unset($this->aFName);

$this->aFName=array();

for($i=0;$inCols;$i++)

$this->aFName[$i]=strtolower(mysql_field_name($this->nResult,$i));

}

function SetValue($Index,$Value) //指定数据,跟在AddNew后执行;

{

if($this->NewEdit==0)

{

$this->nErr=1;

$this->sErr="SetValue:请先执行AddNew()或者Edit()!";

return;

}

if(is_int($Index))

{

if($Index<0||$Index>$this->nCols)

{

$this->nErr=1;

$this->sErr="SetValue:插入不存在的列值!";

return;

}

$this->aNew[$Index]=$Value;

$tmpIn=$Index;

}

elseif(is_string($Index))

{

$Index=strtolower($Index);

for($i=0;$inCols;$i++)

{

if($this->aFName[$i]==$Index)

break;

}

if($i==$this->nCols)

{

$this->nErr=1;

$this->sErr="SetValue:插入不存在的列值!";

return;

}

$this->aNew[$i]=$Value;

$tmpIn=$i;

}

if(!empty($this->sName))

$this->sName.=",";

$this->sName.=$this->aFName[$tmpIn];

//根据当前字段的类型生成相应的新值

if($this->sValue!="#@!")

$this->sValue.=",";

else

$this->sValue="";

$ftype=@mysql_field_($this->nResult,$i);

//echo($ftype.",".$this->aNew[$i].",".$i.":".$sValue."

");

switch($ftype)

{

case "string":

case "date":

case "datetime":

$this->sValue.="\"".$this->aNew[$tmpIn]."\"";

$this->sEdit="\"".$this->aNew[$tmpIn]."\"";

break;

case "int":

case "unknown":

$this->sValue.=$this->aNew[$tmpIn];

$this->sEdit=$this->aNew[$tmpIn];

break;

default:

$this->nErr=1;

$this->sErr="Update:字段名为".$this->aFName[$tmpIn]."的".$ftype."类型目前版本不支持,请用别的方法添加数据!";

return;

}

if($this->NewEdit==2)

$this->sName.="=".$this->sEdit;

}

function Update()    //存储新值到数据库

{

$strSQL="";

if($this->NewEdit==0)

{

$this->nErr=1;

$this->sErr="Update:请先执行AddNew()或者Edit(),再用SetValue()添加值!";

return;

}

if(empty($this->sValue))

{

$this->nErr=1;

$this->sErr="Update:在数据为空的情况下,不能添加或修改数据!";

return;

}

switch($this->NewEdit)

{

case 1:       //添加

$strSQL="insert into ";

$strSQL.=$this->sTName;

$strSQL.=" (".$this->sName.") ";

$strSQL.="values (".$this->sValue.")";

break;

case 2:          //修改

$strSQL="update ";

$strSQL.=$this->sTName;

$strSQL.=" set ";

$strSQL.=$this->sName;

if(!empty($this->sEditCon))

$strSQL.=" where ".$this->sEditCon;

break;

default:

$this->nErr=1;

$this->sErr="Update:Update()生成SQL语句出错,请检查!";

return;

}

$this->sSQL=$strSQL;

if(!$this->nResult=mysql_query($strSQL))

{

$this->nErr=1;

$this->sErr="Update:SQL语句:".$strSQL."

MySql错误:".mysql_error();

return;

}

//echo($this->sSQL."

");

//作清理工作

$this->NewEdit=0;

unset($this->aNew);

mysql_query("commit");

}

}

confly MySQL_MYSQL的操作类(已封装)相关推荐

  1. php精辟代码欣赏,数据库操作类,封装所有数据库操作

    下面是php各种代码库,个人分享 <?php //******************************************************************* //此处 ...

  2. php封装数据库操作类,php简单数据库操作类的封装

    本文实例为大家分享了php封装一个简单的数据库操作类,供大家参考,具体内容如下 一.代码 class conndb{ private $local; private $username; privat ...

  3. Apache-DBUtils实现CRUD操作,已封装的API实现jdbc对数据库进行操作

    文章目录 一.Apache-DBUtils简介 二.主要API的使用 1.DbUtils类 2.QueryRunner类 3.ResultSetHandler接口及实现类 三.Apache-DBUti ...

  4. 小博老师解析Java核心技术 ——JDBC数据库操作类封装

    2019独角兽企业重金招聘Python工程师标准>>> [引言] 我们在学习Java编程时,连接数据库技术(JDBC)是一项必备技能,我们经常需要读取或操作持久性存储的结构化数据.那 ...

  5. php封装一个用户类,PHP封装的一个单例模式Mysql操作类

    掌握满足单例模式的必要条件----三私一公. ①私有的构造方法-为了防止在类外使用new关键字实例化对象. ②私有的成员属性-为了防止在类外引入这个存放对象的属性. ③私有的克隆方法-为了防止在类外通 ...

  6. springboot上传下载文件(4)--上传下载工具类(已封装)

    因为在做毕设,发现之前的搭建ftp文件服务器,通过ftp协议无法操作虚拟机临时文件,又因为ftp文件服务器搭建的比较麻烦:而 hadoop的HDFS虽然可以实现,但我这里用不到那么复杂的:所以我封装了 ...

  7. thinkphp mysql类_PHP封装类似thinkphp连贯操作数据库的Db类(简单版)

    为了方便操作Mysql数据库, 封装类似thinkphp连贯操作数据库的Db类<?php header("Content-Type:text/html;charset=utf-8&qu ...

  8. php操作mysql的封装类_PHP封装的mysqli数据库操作类示例

    本文实例讲述了PHP封装的mysqli数据库操作类.分享给大家供大家参考,具体如下: 由于PHPMySQL操作在PHP5.4以下被弃用而推荐使用mysqli(MySQL Improvement),这里 ...

  9. C# 封装的功能强大的中国农历日历操作类的代码

    将代码过程经常用的代码片段备份一下,下边资料是关于C# 封装的功能强大的中国农历日历操作类的代码,希望能对大伙有些用途. private static int leapDays(int y){if ( ...

  10. 登陆cf出现1.php,cf兄弟礼包验证码 一个PHP验证码类代码分享已封装成类

    代码如下:<?php session_start(): Header("Content-type: image/gif"): class SecurityCode { pri ...

最新文章

  1. pandas XLRDError Excel xlsx file; not supported 解决办法
  2. 千万级通用的分页存储过程
  3. js 常用倒计时功能:
  4. 关于WPS页面横向问题
  5. OSX 挂载 NTFS 格式硬盘
  6. svn迁移,备份,重装系统后恢复数据 收藏
  7. sql实现从两个表获取字段组成表数据再插入到函数表中
  8. python 字符串 类型互相转换 str bytes 字符串连接
  9. Linux 启动过程剖析
  10. 普华永道发表2012年全球信息安全状况调查报告
  11. 第九课 go的循环语句
  12. 广义表存储结构图的绘制
  13. 计算机长宽高公式,单位换算公式大集合
  14. jsmind 线条_jsMind思维导图模式展示数据
  15. python图灵机器人微信号_IT之家学院:让你的微信号变成自动聊天机器人
  16. js 获取指定某一天的时间戳
  17. java编程题身高排队_编程初学者入门4_从键盘输入5个人的身高(米),求他们的平均身...
  18. 【HTTP劫持和DNS劫持】
  19. 【数位板常见问题】压感笔为什么没有压感了
  20. IO接口以太网低频工业RFID读写器|读取器CK-LR12-E00之Modbus TCP的寄存器定义与说明

热门文章

  1. ftp限制用户访问目录
  2. 《舰在亚丁湾》 “海军特战队”央视电视剧起航
  3. ListView,GridView的getView多次调用问题
  4. Rabbitmq-server-3.7.18安装完整过程
  5. php monolog 使用,PHP 依赖工具 monolog的使用
  6. 国脉信息学院计算机网络,福建工程学院国脉信息学院《计算机网络模拟题》
  7. winform通过WebClient调用api接口
  8. C# winform窗体实现图片轮播
  9. Windows下python安装pymyssql报错
  10. JAVA反射性能约慢三个量级