共计 7562 个字符,预计需要花费 19 分钟才能阅读完成。
MYSQL 修改后新版本的操作类是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
MYSQL 的操作类(修改后的新版本)
class Mysqldb
{
// 使用说明:
// 该类完全按照 ADO 的习惯书写的,用过 ASP 的人都觉得 ASP 连接数据库比 PHP 好用(这是我的感觉),
// 但 PHP 得一个一个 api 地写,挺累,该类做了完全的封装
// 创建类的实例时可以指定一个数据库表和选择的数据库,如:new MySQLDB(table , database
// 查询数据时 Query 后可以用 GetValue 得到相应的值,既可以是字段名也可以是已 0 开始的序号
// 插入新值,先用 AddNew 后使用 SetValue 相应的字段名或序号和字段值,在用 Update 添加
// 编辑时用 Edit 指定编辑记录的条件在使用 SetValue,最后用 Update 添加
// 在类使用过程中,sTName 记录上次使用的数据库表名,当指定后可以直接使用,以后的操作默认在该表
// 上进行操作,当然也可以每次指定特殊的表进行操作
//nErr 指示是否操作出错,sErr 记录最后一次出错的错误代码,记录了明确的有哪个函数引起的错误
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_db($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;$i $this- nCols;$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;$i $this- nCols;$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;$i $this- nCols;$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;$i $this- nCols;$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;$i $this- nCols;$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_type($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
}
}
?
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。