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(){
}
}
?>