php数据库访问变慢的一个原因

中文乱码问题

数据库中存储的内容是一样的

phpmyadmin取出的中文内容,就可以正常显示,但是我自己的Php代码取出来全是问号,我觉得,“一定是我的打开方式不对”


还有就是,在单纯使用php代码访问数据库的过程中,一个明显能让数据库访问卡顿的语句是:

public function selectF($pid){
		//mysql_query("SET NAMES 'UTF8'");
		//mysql_query("SET CHARACTER SET UTF8");
		
		$link =$this->dbconnect();
		$sqlsf = 'select hrp1000.OBJID,hrp1000.STEXT,hrp1000.KOSTL from hrp1000,hrp1001 where hrp1000.OBJID=hrp1001.OBJID and hrp1001.PLVAR=1 and hrp1000.OTYPE=\'O\' and hrp1001.RELAT=2 and hrp1001.RSIGN=\'A\' and hrp1001.SOBID = \''.$pid.'\'';
  	
		$this->lastqueryid = mysql_query($sqlsf) or $this->tempshow(LLS('tempdbsqlmis'),'');
		
		$datalist = array();
		$cnt=0;
		while(($rs = mysql_fetch_array($this->lastqueryid, MYSQL_ASSOC)) != false) {
			$datalist[] = $rs;
		}
		
		if(is_resource($this->lastqueryid)) {
			mysql_free_result($this->lastqueryid);
			$this->lastqueryid = null;
		} 
		
		return $datalist; 
		
	}

mysql_query("SET NAMES 'UTF8'");
的出现,让速度明显变慢

下面转载一个代码  首先获取字符串,查看其ascII码,然后判断其编码方式

function is_gb2312($str)
{
        for($i=0; $i<strlen($str); $i++) {
                $v = ord( $str[$i] );
                if( $v > 127) {
                        if( ($v >= 228) && ($v <= 233) )
                        {
                                if(($i+2) >= (strlen($str)- 1)) return true;  // not enough characters
                                $v1 = ord( $str[$i+1] );
                                $v2 = ord( $str[$i+2] );
                                if( ($v1 >= 128) && ($v1 <=191) && ($v2 >=128) && ($v2 <= 191) ) // utf编码
                                        return false;
                                else
                                        return true;
                        }
                }
        }
        return true;
}


你可能感兴趣的:(php数据库访问变慢的一个原因)