文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>PHP中使用ADODB连接MySQL中文乱码

PHP中使用ADODB连接MySQL中文乱码

时间:2010-03-11  来源:jming

    最近写程序,朋友推荐使用ADODB进行数据库连接,速度快,支持数据库种类很多,功能也很强大,使用一下觉得很不错。我程序使用Extjs,数据库PostgresQL,字符集使用的是utf-8,ADODB没有做任何改动就使用上了,很不错。     有另外一个项目,也使用Extjs,数据库使用MySQL5,我把数据库连接也改成了ADODB,但是问题出现了,中文显示的都是???,检查数据库的字符集,Apache的字符集,PHP的字符集都是utf-8的,不知道问题出在了什么地方,把ADODB的源码也读了一遍,也没有找到。     最后在网上看到了很多朋友都遇到了这样的问题,也提了不少的解决方法,试过后都不行,最后看到了关于Mysql的字符设置的资料,于是修改了ADODB中mydql驱动的代码,解决了问题,先把具体的方法同大家共享一下:     找到ADODB中的drivers目录下的adodb-mysql.inc.php文件,修改其中的 _connect和 _pconnect两个函数,各增加以下代码:+ @mysql_query("SET NAMES 'utf8'", $this->_connectionID);即可,位置在SelectDB一行之前。  

 function _connect($argHostname, $argUsername, $argPassword, $argDatabasename)
 {
  if (!empty($this->port)) $argHostname .= ":".$this->port;
  
  if (ADODB_PHPVER >= 0x4300)
   $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword,
            $this->forceNewConnect,$this->clientFlags);
  else if (ADODB_PHPVER >= 0x4200)
   $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword,
            $this->forceNewConnect);
  else
   $this->_connectionID = mysql_connect($argHostname,$argUsername,$argPassword);
 
  if ($this->_connectionID === false) return false;
  + @mysql_query("SET NAMES 'utf8'", $this->_connectionID);
  if ($argDatabasename) return $this->SelectDB($argDatabasename);
  return true; 
 }


function _pconnect($argHostname, $argUsername, $argPassword, $argDatabasename)
    {
        if (!empty($this->port)) $argHostname .= ":".$this->port;
        
        if (ADODB_PHPVER >= 0x4300)
            $this->_connectionID = mysql_pconnect($argHostname,$argUsername,$argPassword,$this->clientFlags);
        else
            $this->_connectionID = mysql_pconnect($argHostname,$argUsername,$argPassword);
        if ($this->_connectionID === false) return false;
        if ($this->autoRollback) $this->RollbackTrans();
        + @mysql_query("SET NAMES 'utf8'", $this->_connectionID);
        if ($argDatabasename) return $this->SelectDB($argDatabasename);
        return true;    
    }


相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载