connname=$connname; } function query($sql){ $stmt = sqlsrv_query($this->link, $sql); if($stmt === false) { $this->error_log[] = sqlsrv_errors(); }else{ $this->query_id = $stmt; } } function fetch_all($sql){ $this->query($sql); $data = []; while($row = @sqlsrv_fetch_array($this->query_id,SQLSRV_FETCH_ASSOC)) { $data[] = $row; } return $data; } function fetch_one($sql){ $this->query($sql); return sqlsrv_fetch_array($this->query_id,SQLSRV_FETCH_ASSOC); } function fetch_abc($sql){ $count=$this->fetch_one($sql); return current($count); } function affectedRows() { return ($this->query_id) ? @sqlsrv_fetch_row($this->query_id) : false; } function update($table,$field,$where,$conn=''){//修改数据库 if($conn) $this->links($conn); if(is_array($field)){ foreach ($field as $key => $value){ $sqlud.=$key."='".$value."',"; } $sql="UPDATE $table SET ".substr($sqlud,0,-1)." WHERE $where "; }else{ $sql="UPDATE $table SET $field WHERE $where "; } return $this->query($sql); if($conn) $this->close(); } function insert($table,$field,$date='',$conn=''){//添加数据库 $date 为空, $field为数组添加 if($conn) $this->links($conn); if($date){ $sql="INSERT INTO $table ($field) VALUES ($date)"; }else{ foreach($field as $key => $value){ $sqlfield.= $key.","; $sqlvalue.= "'".$value."',"; } $sql="INSERT INTO $table (".substr($sqlfield,0,-1).") VALUES (".substr($sqlvalue,0,-1).")"; } //echo $sql; return $this->query($sql); if($conn) $this->close(); } function deldate($table,$where,$conn=''){//删除数据库 if($conn) $this->links($conn); $sql="DELETE FROM ".$table." WHERE ".$where." "; $rs=$this->query($sql); return sqlsrv_query($rs); if($conn) $this->close(); } //分页 注意一定要 order by //public function page($sql,$pkey,$table,$order='asc',$pageSize=10,$linkNum=7,$page=1,$conn=''){ public function page($info){ if(!$info['sql'] || !$info['key'] || !$info['table']){ return ''; } if($info['conn']) $this->links($info['conn']); $info['page'] = is_numeric($info['page']) ? $info['page'] : 1; $info['pageSize'] = is_numeric($info['pageSize']) ? $info['pageSize'] : 10; $info['linkNum'] = is_numeric($info['linkNum']) ? $info['linkNum'] : 7; if(!$info['count']){ $info['count'] = "select count(*) from (".str_replace(strrchr($info['sql'],"order"),"",$info['sql']).") tmptable"; } $totalNum = $this->fetch_abc($info['count']);//总数 $maxPage = (int)ceil($totalNum/$info['pageSize']);//总页码 $info['page'] = $info['page']>$maxPage ? $maxPage : $info['page']; $num = ($info['page']-1)*$info['pageSize']; $num = $num<0 ? 0 : $num; //echo $info['count']."


".$totalNum."
".$num."

"; $sql=str_replace("select ","select top ".$info['pageSize']." ",$info['sql']); if(strstr($sql,' where ')){ if(strstr(strtolower($sql),' left join ')){ $sql=str_replace(" where "," where a.".$info['key']." not in(select top ".$num." ".$info['key']." from ".$info['table']." ".$info['where']." order by ".$info['order'].") and ",$sql); }else{ $sql=str_replace(" where "," where ".$info['key']." not in(select top ".$num." ".$info['key']." from ".$info['table']." ".$info['where.']." order by ".$info['order'].") and ",$sql); } }else{ if(strstr(strtolower($sql),' left join ')){ if(strstr($sql,' group by ')){ $sql=str_replace(" group by "," where a.".$info['key']." not in(select top ".$num." ".$info['key']." from ".$info['table']." order by ".$info['order'].") group by ",$sql); }else{ $sql=str_replace(" order by "," where a.".$info['key']." not in(select top ".$num." ".$info['key']." from ".$info['table']." order by ".$info['order'].") order by ",$sql); } }else{ $sql=str_replace(" order "," where ".$info['key']." not in(select top ".$num." ".$info['key']." from ".$info['table']." order by ".$info['order'].") order ",$sql); } } //echo $sql."


"; $data = $this->fetch_all($sql); return ['data'=>$data,'page'=>[ "page"=>$info['page'], "start"=>($info['page']-round($info['linkNum']/2))>0 ? ($info['page']-round($info['linkNum']/2)) : "1", "end"=>($info['page']+round($info['linkNum']/2))<$maxPage ? ($info['page']+round($info['linkNum']/2)) : $maxPage, "maxPage"=>$maxPage, "pageSize"=>$info['pageSize'], //每页显示 "linkNum"=>$info['linkNum'], //链接显示数 "totalNum"=>$totalNum //总数 ]]; if($conn) $this->close(); } // 字符串截取函数 function str_substr($start, $end, $str){ $temp = explode($start, $str, 2); $content = explode($end, $temp[1], 2); return $content[0]; } function getfetch($rs,$rr=''){ if($rr=='assoc'){ return @mssql_fetch_assoc($rs); }elseif($rr=='row'){ return @mssql_fetch_row($rs); }else{ return @mssql_fetch_array($rs); } } function rscount($rs){ //获取rs总数 return mssql_num_rows($rs); } function getcount($sql,$hit=0,$conn=''){ //获取总数 if($conn) $this->links($conn); return @mssql_num_rows($this->query($sql))+$hit; if($conn) $this->close(); } function getcounts($field,$table,$where,$hit=0,$conn=''){ //获取字段总和数 if($conn) $this->links($conn); $rs=$this->query("select sum($field) from $table where $where"); $row=$this->getfetch($rs); return $row[0]+$hit; if($conn) $this->close(); } function getdy($field,$table,$where,$order='',$rr='',$conn=''){//一般调用 if($conn) $this->links($conn);//连接数据库 $sql="select $field from $table "; if($where){ $sql.="WHERE $where "; } if($order){ $sql.=" order by $order "; } $rs=$this->query($sql); $row=$this->getfetch($rs,$rr); if(preg_match('/[,*]/i',$field)){ return $row; }else{ return $row[0]; } unset($sql,$rs,$row); if($conn) $this->close();//关闭数据库 } function getloop($field,$table,$where,$order='',$num=0,$rr='',$conn=''){//一般循环调用 if($conn) $this->links($conn); $sql="select $field from $table "; if($where){ $sql.=" WHERE $where "; } if($order){ $sql.=" order by $order "; } $rs=$this->query($sql); $rot=array(); if(!$num){ $num=$this->rscount($rs);} for($p=0;$p<$num;$p++){ $row=$this->getfetch($rs,$rr); if($row) $rot[]=$row; } return $rot; unset($sql,$rs,$row,$rot); if($conn) $this->close(); } function getloops($sql,$conn=''){//一般循环调用 if($conn) $this->links($conn); $rs=$this->query($sql); $rot=array(); if(!$num){ $num=$this->rscount($rs);} for($p=0;$p<$num;$p++){ $row=$this->getfetch($rs,$rr); if($row) $rot[]=$row; } return $rot; unset($sql,$rs,$row,$rot); if($conn) $this->close(); } function getgl($gg,$str){//数组过滤 $strs=explode(',',$str); foreach($strs as $value){ unset($gg[$value]); } return $gg; } function getxz($str,$x,$d=0){//字符输入限制 $s = (strlen($str)+mb_strlen($str,'utf8'))/2; if($d){ if($s>=$x && $s<=$d) return $str; }else{ if($s>=$x) return $str; } } //全局函数 $ts 特殊转换 | 0=特殊变量 1=num user az tel mail 2=字符限制小 3字符限制最大 4=1小写2大写 5=1编码 2编码 //$post=$myConn->getpost($_POST,"a|user,b|0|3|12|2|gbk|utf-8,c|0|0|0|2"); //当 a 为数组时不起作用 只能1级特殊转换 function getpost($str,$ts='',$key=''){ if(is_array($str)){ foreach($str as $key => $val){ $str[$key] = $this->getpost($val,$ts,$key); } }else{ $str=trim($str); if($ts && $key){//解决 $key 二级数组问题 if(is_array($ts)){ $i=0; foreach($ts as $keys => $vals){ if($i) $tss.=","; $tss.=$keys."|".$vals; $i++; } $ts=$tss; } $tsa=explode(",",$ts); for($i=0;$igetre($str); } if($ts_small){//字符限制 $str=$this->getxz($str,$ts_small,$ts_big); } if($ts_size==1){//大小写转换 $str=strtolower($str); }elseif($ts_size==2){ $str=strtoupper($str); } } } }else{ $str=$this->getre($str); } } return $str; } function getarray($str,$b='|'){//数组转换 $str 为数组 $b=| 为 $str="a|b|c"; if(is_array($str)){ $i=0; $b=iconv('gbk','utf-8',$b); foreach($str as $key=>$val){ if($i) $string.=$b; $string.=$val; $i++; } return $string; }else{ return $str; } } function getre($str){ //提交字符过滤 $str=str_replace(";", ";", $str); $str=str_replace("<", "<", $str); $str=str_replace(">", ">", $str); $str=str_replace("\"", """, $str); $str=str_replace("'", "′", $str); $str=str_replace("\\", "", $str); return $str; } function getbm($str,$ba="gbk",$bb="utf-8"){//编码转换 return iconv($ba,$bb,$str); } function getip(){ //IP static $realip; if (isset($_SERVER)){ if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ $realip = $_SERVER["HTTP_X_FORWARDED_FOR"]; }else if (isset($_SERVER["HTTP_CLIENT_IP"])) { $realip = $_SERVER["HTTP_CLIENT_IP"]; }else{ $realip = $_SERVER["REMOTE_ADDR"]; } } else { if(getenv("HTTP_X_FORWARDED_FOR")){ $realip = getenv("HTTP_X_FORWARDED_FOR"); }else if (getenv("HTTP_CLIENT_IP")) { $realip = getenv("HTTP_CLIENT_IP"); }else{ $realip = getenv("REMOTE_ADDR"); } } return $realip; } function treat($original,$history){//当原数组的值为空,历史数据值填补原数组 foreach($original as $key=>$val){ if($val || $val=='0'){ $array[$key]=$val; }else{ $array[$key]=$history[$key]; } } return $array; } function randmm($len){//随机数产生 $srcstr="0123456789"; mt_srand(); $strs=""; for($i=0;$i<$len;$i++){ $strs.=$srcstr[mt_rand(0,9)]; } return $strs; } function randhz($len,$size=0){ //随机混杂生产 $srcstr="abcdefghijklmnopqrstuvwxyz0123456789"; mt_srand(); $strs=""; for($i=0;$i<$len;$i++){ $strs.=$srcstr[mt_rand(0,35)]; } if($size){ return strtoupper($strs); }else{ return $strs; } } function fileHz($a){//获取文件后缀 $c=strrchr($a,'.'); if($c){ return strtolower($c);//转换小写 }else{ return ''; } } function createFolder($path) {//创建多级文件夹 if (!file_exists($path)) { $this->createFolder(dirname($path)); mkdir($path, 0777); } } function filesize($size,$s=2,$h=0){ if($h) $size=$size*$h; if($size<=1024) { return $size.'B'; }elseif($size<=(1024*1024)){ $size=$size/1024; return number_format($size,$s).'KB'; }elseif($size<=(1024*1024*1024)){ $size=$size/1024/1024; return number_format($size,$s).'MB'; }else{ $size=$size/1024/1024/1024; return number_format($size,$s).'GB'; } } function array_sort($arr,$keys,$type='desc'){ //二维数组重新排序 $keysvalue = $new_array = array(); foreach ($arr as $k=>$v){ $keysvalue[$k] = $v[$keys]; } if($type == 'asc'){ asort($keysvalue); }else{ arsort($keysvalue); } reset($keysvalue); $i=0; foreach ($keysvalue as $k=>$v){ $new_array[$i++] = $arr[$k]; } return $new_array; } function is_utf8($word){//判断是否UTF8编码文件 if(preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true){ return 'utf-8'; }else{ return 'gb2312'; } } function file_get_nr($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); return curl_exec($ch); curl_close($ch); } function link_so(){ $flag = 0; $tmp = $_SERVER['HTTP_USER_AGENT']; if(strpos($tmp, 'Googlebot') !== false){ $flag = 1; } else if(strpos($tmp, 'Baiduspider') >0){ $flag = 1; } else if(strpos($tmp, 'Yahoo! Slurp') !== false){ $flag = 1; } else if(strpos($tmp, 'msnbot') !== false){ $flag = 1; } else if(strpos($tmp, 'Sosospider') !== false){ $flag = 1; } else if(strpos($tmp, 'YodaoBot') !== false || strpos($tmp, 'OutfoxBot') !== false){ $flag = 1; } else if(strpos($tmp, 'Sogou web spider') !== false || strpos($tmp, 'Sogou Orion spider') !== false){ $flag = 1; } else if(strpos($tmp, 'fast-webcrawler') !== false){ $flag = 1; } else if(strpos($tmp, 'Gaisbot') !== false){ $flag = 1; } else if(strpos($tmp, 'ia_archiver') !== false){ $flag = 1; } else if(strpos($tmp, 'altavista') !== false){ $flag = 1; } else if(strpos($tmp, 'lycos_spider') !== false){ $flag = 1; } else if(strpos($tmp, 'Inktomi slurp') !== false){ $flag = 1; } return $flag; } function close(){ return sqlsrv_close($this->link); } function __destruct(){ } } ?>