Chinaunix首页 | 论坛 | 博客
  • 博客访问: 249179
  • 博文数量: 0
  • 博客积分: 4010
  • 博客等级: 上校
  • 技术积分: 450
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-31 10:03
我的朋友
     该分类下暂时没有公开的博文,给他留言提醒一下吧。
给主人留下些什么吧!~~

chinaunix网友2006-10-30 00:15

db = &ADONewConnection( $pairs['type'] ); $this->db->Connect($pairs['host'],$pairs['user'],$pairs['password'],$pairs['name']); $this->db->setFetchMode(ADODB_FETCH_ASSOC); $this->prefix = $pairs['prefix']; } //构造函数 function sqlUtil() { $this->__connect(); } //得到指定信息字段 function getResourcesOnce($filed,$val) { $sql = "select ".$this->getSearchFileds()." from ".$this->prefix.$this->table; $sql.= " where `$filed` = '".$this->daddslashes($val)."'"; $this->debug && die($sql); $result = $this->GetRow($sql); return $result; } //指定条件列表 function getResourcesListBy($filed,$val,$limit='') { $sql = " select ".$this->getSearchFileds()." from ".$this->prefix.$this->table; $sql.= " where `$filed` = '".$this->daddslashes($val)."'"; $sql.= $this->getOrderby(); $sql.= $this->getSqlLimit($limit); $this->debug && die($sql); $query = $this->query($sql); $result = $this->getResources($query); return $result; } //无规则查询 function getResourcesList($limit='') { $sql = " select ".$this->getSearchFileds()." from ".$this->prefix.$this->table; $sql.= $this->getOrderby(); $sql.= $this->getSqlLimit($limit); $this->debug && die($sql); $query = $this->query($sql); $result = $this->getResources($query); return $result; } //查询资源项目数 function getResourcesTotal($filed='',$val='') { $sql = "select count(".$this->fileds.") from ".$this->prefix.$this->table; if( !empty($filed) && !empty($val) ) { $sql.= " where `$filed`= '".$this->daddslashes($val)."'"; } $this->debug && die($sql); return $this->db->GetOne($sql); } //getOne Executes the SQL and returns the first field of the first row. The recordset and remaining rows are discarded for you automatically. If an error occur, false is returned. function &GetOne($sql) { return $this->db->GetOne($sql); } /*插入一条数据 ,ADODB_Lite中使用 function insertone ($array,$table=0) { $sql = $this->getInsertSql($array,$table); $this->db->Query($sql); $results = $this->db->Insert_ID(); if($results > 0) return $results; else if ( $this->debugging ) { echo '
SQL语句为:'.$sql.'
'; die($this->db->ErrorMsg()); }else return 0; } */ //数据录入 function inDatabase($pairs) { $result = $this->query( $this->GetInsertSQL($pairs) ); return $result; } //最后一笔录入ID function getInsert_id() { return $this->db->Insert_ID(); } //数据更新 function updateDatabase($pairs,$filed,$val) { return $this->query($this->GetUpdateSQL($pairs,$filed,$val)); } //删除数据库内容 function deleteDatabase($filed,$val) { $sql = " delete from ".$this->prefix.$this->table." where `$filed` = '".$this->daddslashes($val)."'"; $this->debug && die($sql); return $this->query($sql); } //调用(重设)ADO中 FetchRow 方法 function &FetchRow( &$query ) { return $query->FetchRow(); } //调用(重设ADO)GetRow 方法 function &GetRow($sql) { return $this->db->GetRow($sql); } //调用(重设ADO)GetArray 方法 function &GetArray($sql) { return $this->db->GetArray($sql); } //调用(重设ADO)GetUpateSQL方法 function &GetUpdateSQL($pairs,$filed,$val) { $sql = " select * from ".$this->prefix.$this->table; $sql.= " where `$filed` = '$val'"; $res = $this->query($sql); $updateSQL = $this->db->GetUpdateSQL(&$res,$pairs,true); $this->debug && die($sql); return $updateSQL; } //调用(重设ADO)GetInsertSQL方法 function &GetInsertSQL( $pairs ) { $table = $this->prefix.$this->table; $insertSQL = $this->db->GetInsertSQL( $table, $pairs ); return $insertSQL; } //发送sql语句 function query($sql) { return $this->db->Execute( $sql ); } //列表查询 function getResources ($query) { if( !$query->EOF ) { while( $array = $this->FetchRow($query) ) { $result[] = $array; } } return $result; } //指定查询列 function getSearchFileds() { $this->fileds = empty($this->fileds)?'*':$this->fileds; return $this->fileds; } //排序SQL语句 function getOrderby() { $sql = empty($this->order)?'':' order by '.$this->order.' ' . $this->orderBy ; return $sql; } //获得limit 2006-2-24 正式抛弃此方法 function getSqlLimit($limit='') { if( !empty($limit) ) { if( is_array($limit) ) { $sql.= ' limit '.$limit[0].','.$limit[1]; } else { $sql.= ' limit '.$limit; } } return $sql; } //###### 取得一条或多条数据资料 function &SelectLimit ( $sql,$limit='' ) { if( empty($limit) ) { return $this->db->selectLimit($sql); } else { $limit = (array)$limit; return $this->db->selectLimit($sql,$limit[1],$limit[0]); } } //###### 取得一条数据资料 function fetch_GetSQL($table,$id,$selid,$isfix=1,$sqlkey2='') { if($id!='') { $sqlkey1 .="$id='$selid'"; } $sql = "select * from $table where $sqlkey1$sqlkey2 "; $info=$this->SelectLimit($sql,1); return $info; } //数据入库,查询格式化 function daddslashes($string, $force = 0) { if(!$GLOBALS['magic_quotes_gpc'] || $force) { if(is_array($string)) { foreach($string as $key => $val) { $string[$key] = $this->daddslashes($val, $force); } } else { $string = addslashes($string); } } return $string; } //按条件查询是否已经存在值 function checkIsExist($filed,$value,$and='') { $sql = "select count(*) as 'num' from `".$this->prefix.$this->table."` where `".$filed."` = '".$this->daddslashes($value)."'"; if( !empty($and) ) { $sql.=" and ".$and; } $this->debug && die($sql); $res = $this->db->GetRow( $sql ); if($res['num'] > 0 ) { return false; } else { return true; } } //重设表 function setTable($table) { $this->prefix.$this->table = $table; } } ?>

回复 |  删除 |  举报

chinaunix网友2006-10-29 17:48

有个不大不小的问题想和您请教一下,希望您能给个解释 看看这个函数: //###### 取得一条数据资料 function fetch_GetSQL($table,$id,$selid,$isfix=1,$sqlkey2=''){ global $db; if($id!=''){ $sqlkey1 .="$id='$selid'"; } $info=$db->query("SELECT * FROM $table WHERE $sqlkey1$sqlkey2 LIMIT 1"); return $info; } 帮忙把fetch_GetSQL()函数的参数分析以下,比如说第一个肯定是表名…… 这里有几个应用了这个fetch_GetSQL()函数的例子: $getusergroupid=fetch_GetSQL('carclub_group','group_grouplinkid',2," AND group_carclubid='$post[carclub]'"); $cityinfo=fetch_GetSQL('areas','areaid',$bbuserinfo['user_cityid']); 这两个例子里面'carclub_group'和'areas'都是数据表;'group_grouplinkid'和'areaid'分别是对应表里的字段;后面的几个不太明白,比如说第一个例子里面有4个参数,而fetch_GetSQL()中有5个,第一个例子中的 " AND group_carclubid='$post[carclub]'" 很象 $sqlkey2=''不是吗? 第二个例子倒是不难理解 应该是从表areas查询仅当条件areaid = $bbuserinfo['user_cityid'] 并且返回第一行,其中areaid是主键 当我把fetch_GetSQL()改为ADODB中的写法时测试时会报这样的错误:Fatal error: Cannot use object of type ADORecordSet_mysql as array in D:\AppServ\www\register\register_direct.php on line 90 其中在90行就是上面例子中的第一个$getusergroupid 这是我装载了ADODB后写了个class sqlUtil,在该环境下自定义的两个函数: //###### 取得一条或多条数据资料 function &SelectLimit ( $sql,$limit='' ) { if( empty($limit) ) { return $this->db->selectLimit($sql); } else { $limit = (array)$limit; return $this->db->selectLimit($sql,$limit[1],$limit[0]); } } //###### 取得一条数据资料,当然这里fetch_GetSQL的写法就不一样了 function fetch_GetSQL($table,$id,$selid,$isfix=1,$sqlkey2='') { if($id!='') { $sqlkey1 .="$id='$selid'"; } $sql = "select * from $table where $sqlkey1$sqlkey2 ";//本来这里原先是这样写的$sql = "select * from `".$table."` where $sqlkey1$sqlkey2 ";由于$table是该class sqlUtil里面唯一声明过的所以就加了反撇号 $info=$this->SelectLimit($sql,1); return $info; } 所以现在有两个问题希望大虾您能解释:第一个就是fetch_GetSQL()里面的各个参数和该函数的逻辑,另一个就是fetch_GetSQL()在装在了ADODB后的sqlUtil类中的写法了,这里面肯定有点错误,希望能得到您的见解;上次上您Blog看了个AdodbLite加快开发的例子很是触动,自己也想把程序的数据库接口该成AdodbLite的,可惜老是会出些不大不小的问题,所以现在就搁着了,这个函数的问题都缠了我很久了……

回复 |  删除 |  举报

chinaunix网友2006-10-25 23:30

博客换界面了哦,不是xml的了。

回复 |  删除 |  举报

chinaunix网友2006-04-29 13:30

你每天很忙的哦,注意身体哦,脑子也营养下哦

回复 |  删除 |  举报

chinaunix网友2006-04-26 20:13

to Angela: 可惜我最近没有跳槽的打算。谢谢~ to AK: 最近一直在忙新项目,封闭开发倒不用。上班时间都在做事,下班回家后都懒得上网了,累啊。 项目还要过一阶段时间才能完成。 到时候就能回到phpso和php family的大家庭了,呵呵

回复 |  删除 |  举报
留言热议
请登录后留言。

登录 注册