PHP开发笔记's Archiver

fangzhen 发表于 2009-2-27 17:30

Thinkphp中解决多数据库操作乱码问题

在Thinkphp数据库操作类里,并没有考虑到多数据库连接时字符集不同的情况,所以,我这里解决问题的思路是,在加入新的数据库连接前修改数据库的字符集  C('DB_CHARSET','latin1'); 对该数据的操作结束后,再修改回去 C('DB_CHARSET','utf8');值得注意的是,数据表中如果存储汉字的话,只能用query方法搜索数据,负责用auto_charset函数转字符编码时,不起作用。
  $where = 'fid = 12';
  C('DB_CHARSET','latin1');
  $Threads = new Model();
  $Threads->addConnect(C("DB_BBS"),1,true);
  $Threads->addConnect(C("DB_MAIN"),2,true);
  $Threads->switchConnect(1);
  $threadList = $Threads->query("SELECT tid,fid,subject FROM cdb_threads WHERE $where ORDER BY lastpost DESC LIMIT 0,8");
  dump($threadList);
  $Threads->switchConnect(2);
  if(count($threadList)){
   $this->assign($lottType."ThreadList", auto_charset($threadList,'gb2312','utf8'));
  }
  C('DB_CHARSET','utf8');
目前,还没有找到更好的办法。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.