/ecerp/System/Database/DB.php
PHP | 488 lines | 258 code | 53 blank | 177 comment | 23 complexity | 0895845cc80099e4c253921f2ed3eb2a MD5 | raw file
- <?php
- /**
- * ??????
- * @author Terry
- * @copyright baoling@yeah.net
- *
- */
- class DB{
- /**
- * ??Mysql??
- *
- * @var DB_Mysql
- */
- var $db;
- var $pre='';
- var $table;
- var $order;
- var $where;
- var $arr=array();
- var $sql=null;
- function DB($DB_config){
- if(is_array($DB_config) && $DB_config['adapter'])
- $adapterName='DB_'.$DB_config['adapter'];
- else{
- showError(__T('Config\'s argument error,or miss adapter,please check conf.php!'));
- }
- if(isset($DB_config['pre']))
- $this->pre=$DB_config['pre'];
- require_once(SYSBASE.'Database/DB/'.$DB_config['adapter'].'.php');
- $this->db= new $adapterName($DB_config);
- }
- /**
- * ????????
- *
- * @param ?? $pre
- */
- function setPre($pre){
- $this->pre=$pre;
- }
- /**
- * ???????? ??
- *
- * @param ?? $table
- */
- function setTable($table)
- {
- if(!empty($table)){
- $this->table=str_replace('#',$this->pre,$table);
- }
- }
- function stripTpre($str){
- return str_replace('#',$this->pre,$str);
- }
- /**
- * ?????sql ??
- *
- * @param sql?? $sql
- */
- function setSql($sql){
- if(!empty($sql)){
- $this->sql=str_replace('#',$this->pre,$sql);
- }
- }
- //??sql??
- function getSql(){
- return $this->sql;
- }
- //????
- function setOrder($order){
- if((bool)$order){
- $this->order=' order by '.$order;
- }else{
- $this->order='';
- }
- }
- //????
- function setWhere($where){
- if(!(bool)$where){
- $where=' 1=1 ';
- }
- $this->where=$where;
- }
- //????
- function setField($filed){
- $this->field=$filed;
- }
- //????
- function setArr($arr){
- $this->arr=$arr; //$arr = array(0=>array('name'=>'ssss')); ????
- }
- /**
- * ???????
- *
- * @param ?? $table
- * @param ?? $field
- * @param ?? $if
- * @param ?? $order
- */
- function select($table,$field,$where='',$order=''){
- $this->setTable($table);
- $this->setField($field);
- $this->setWhere($where);
- $this->setOrder($order);
- $this->_select();
- return $this->sql;
- }
- function _select(){
- $this->sql='select '.$this->field.' from '.$this->table.' where '.$this->where.' '.$this->order;
- return $this->sql;
- }
- /**
- * ???????
- *
- * @param ?? $table
- * @param ?? $if
- */
- function delete($table,$where){
- $this->setTable($table);
- $this->setWhere($where);
- return $this->_delete();
- }
- function _delete(){
- $this->sql='delete from '.$this->table.' where '.$this->where;
- return $this->sql;
- }
- /**
- * ????
- *
- * @param ??? $no_p
- * @param ????? $title_rows
- * @param URL?? $set_url
- * @param ????SQL $sqlcount
- * @param ??SQL $sql
- * @return array
- */
- function toPage($no_p,$title_rows,$sqlcount=null,$sql=null){
- if(!$sql)
- $sql = $this->sql;
- if(!$sqlcount){
- $total=$this->numRows($sql);
- }else{
- $total=$this->getOne($sqlcount);
- }
- $totalpage=ceil($total/$title_rows);
- if($no_p<1) $no_p=1;
- if($no_p>$totalpage) $no_p=$totalpage;
- if($total>0){
- $sql=$this->selectLimit($sql,$title_rows,($no_p-1)*$title_rows);
- $list=$this->getAll($sql);
- }else{
- $list=null;
- }
- $arr["ls"]= $list; //????
- $arr["total"]= $totalpage;//????
- $arr['start']=$no_p; //???
- $arr['count']=$total;
- return $arr;
- }
- /**
- * ??????
- *
- * @param ??? $table
- * @param ?? $if
- * @param ??? $arr
- */
- function update($table,$if,$arr){
- $this->setTable($table);
- $this->setWhere($if);
- $this->setArr($arr);
- return $this->_update();
- }
- function _update(){
- $row=$this->arr;
- $fieldValuePairs = array();
- foreach ($row as $fieldName => $value) {
- if(is_Instanceof($value,'SP_DB_Expr')){
- $fieldValuePairs[] = $this->db->q_field($fieldName).
- ' = ' . $value->get();
- }else{
- $fieldValuePairs[] = $this->db->q_field($fieldName).
- ' = ' . $this->db->q_str($value);
- }
- }
- $fieldValuePairs = implode(', ', $fieldValuePairs);
- $this->sql='update '.$this->table.' set '. $fieldValuePairs.' where '.$this->where;
- return $this->sql;
- }
- /**
- * ??????
- *
- * @param ??? $table
- * @param ????,? $arr
- * ?:insert('users',array('xiao'=>'123456'))
- */
- function insert($table,$arr){
- $this->setTable($table);
- $this->setArr($arr);
- return $this->_insert();
- }
- /**
- * ?????????ID
- *
- *
- * @return Mixed
- */
- function insertId(){
- return $this->db->insertId();
- }
- function _insert(){
- $row=$this->arr;
- $fields = array();
- $values = array();
- foreach ($row as $fieldName => $value) {
- $fields[] = $this->db->q_field($fieldName);
- if(is_Instanceof($value,'SP_DB_Expr')){
- $values[] = $value->get();
- }else{
- $values[] = $this->db->q_str($value);
- }
- }
- $fields=implode(',',$fields);
- $values=implode(',',$values);
- $this->sql='insert into '.$this->table.' ('. $fields.') values ( '.$values.') ';
- return $this->sql;
- }
- /**
- * ?????????
- *
- * @param ??SQL $sql
- * @param ??? $length
- * @param Offset $offset
- * @return string $Sql
- */
- function selectLimit($sql=null, $length = null, $offset = null){
- if($sql!=null){
- $this->sql=$sql;
- }
- $this->sql=$this->db->selectLimit($this->sql,$length,$offset);
- }
- /**
- * ???? ???????? sql ????ok
- *
- */
- function echo_sql(){
- echo $this->sql;
- exit();
- }
- /**
- * ????
- *
- * @param string|resource $sql
- *
- * @return Mixed
- */
- function query($sql=false) {
- if(!$sql) {
- $sql=$this->sql;
- } else {
- $this->setSql($sql);
- }
- //??log_db
- //$this->db->query("insert log_db (op_sql, op_time) values('" . addslashes($this->sql) . "', '" . date('Y-m-d H:i:s') . "')");
- return $this->db->query($this->sql);
- }
- /**
- * ????????????
- *
- * @param string|resource $sql
- *
- * @return mixed
- */
- function getAll($sql=false){
- if(!$sql)
- $sql=$this->sql;
- else
- $this->setSql($sql);
- return $this->db->getAll($this->sql);
- }
- /**
- * ??????????????????
- *
- * @param string|resource $sql
- *
- * @return mixed
- */
- function getOne($sql=false)
- {
- if(!$sql)
- $sql=$this->sql;
- else
- $this->setSql($sql);
- return $this->db->getOne($this->sql);
- }
- /**
- * ????????????
- *
- * @param string|resource $sql
- *
- * @return mixed
- */
- function getRow($sql=false)
- {
- if(!$sql)
- $sql=$this->sql;
- else
- $this->setSql($sql);
- return $this->db->getRow($this->sql);
- }
- /**
- * ??????????????
- *
- * @param string|resource $sql
- * @param int $col ??????0 ????
- *
- * @return mixed
- */
- function getCol($col = 0,$sql=false)
- {
- if(!$sql)
- $sql=$this->sql;
- else
- $this->setSql($sql);
- return $this->db->getCol($this->sql,$col);
- }
- /**
- * ???????Key-Value???
- *
- * @param string|resource $sql
- * @return Int
- */
- function getAssoc($sql=false){
- if(!$sql)
- $sql=$this->sql;
- else
- $this->setSql($sql);
- return $this->db->getAssoc($this->sql);
- }
- function fetchArray($resource){
- return $this->db->fetchArray($resource);
- }
- /**
- * Sql?????????
- *
- * @return Int
- */
- function numRows($query){
- return $this->db->numRows($query);
- }
- /**
- * ?????
- *
- * @return Int
- */
- function affectedRows(){
- return $this->db->affectedRows();
- }
- /**
- * ?????
- *
- */
- function close(){
- $this->db->close();
- }
- function strRandom(){
- return $this->db->strRandom();
- }
- /**
- * ????
- *
- */
- function startTrans(){
- $this->db->startTrans();
- }
- /**
- * ????
- *
- */
- function commit()
- {
- $this->db->commit();
- }
- /**
- * ????
- *
- */
- function rollback()
- {
- $this->db->rollback();
- }
- /**
- * ????????
- *
- */
- function transErrors()
- {
- $this->db->transErrors();
- }
- /**
- * ?????????
- *
- * @return Int
- */
- function getQueryNum(){
- return $this->db->getQueryNum();
- }
- /**
- * ??????????????
- *
- * @param Int $time
- * @return unknown
- */
- function DBTime($time=''){
- if ($time=='') {
- $time=time();
- }
- return $this->db->dbTimeStamp($time);
- }
- function q_str($str,$addquote=true){
- return $this->db->q_str($str,$addquote);
- }
- }
- class SP_DB_Expr{
- /**
- * Storage for the SQL expression.
- *
- * @var string
- */
- var $_expr;
- function SP_DB_Expr($expr){
- $this->_expr = (string) $expr;
- }
- function get(){
- return $this->_expr;
- }
- }