adodb 连接mysql_PHP中使用ADODB连接MySQL中文乱码
最近寫程序,朋友推薦使用ADODB進(jìn)行數(shù)據(jù)庫(kù)連接,速度快,支持?jǐn)?shù)據(jù)庫(kù)種類很多,功能也很強(qiáng)大,使用一下覺得很不錯(cuò)。我程序使用Extjs,數(shù)據(jù)庫(kù)PostgresQL,字符集使用的是utf-8,ADODB沒有做任何改動(dòng)就使用上了,很不錯(cuò)。
有另外一個(gè)項(xiàng)目,也使用Extjs,數(shù)據(jù)庫(kù)使用MySQL5,我把數(shù)據(jù)庫(kù)連接也改成了ADODB,但是問(wèn)題出現(xiàn)了,中文顯示的都是???,檢查數(shù)據(jù)庫(kù)的字符集,Apache的字符集,PHP的字符集都是utf-8的,不知道問(wèn)題出在了什么地方,把ADODB的源碼也讀了一遍,也沒有找到。
最后在網(wǎng)上看到了很多朋友都遇到了這樣的問(wèn)題,也提了不少的解決方法,試過(guò)后都不行,最后看到了關(guān)于Mysql的字符設(shè)置的資料,于是修改了ADODB中mydql驅(qū)動(dòng)的代碼,解決了問(wèn)題,先把具體的方法同大家共享一下:
找到ADODB中的drivers目錄下的adodb-mysql.inc.php文件,修改其中的 _connect和 _pconnect兩個(gè)函數(shù),各增加以下代碼:+ @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;
}
總結(jié)
以上是生活随笔為你收集整理的adodb 连接mysql_PHP中使用ADODB连接MySQL中文乱码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 又拿下一块屏幕,中景园2.08寸OLED
- 下一篇: vb mysql 5.1 adodb_V