destoon采集论坛

 找回密码
 立即注册
查看: 152|回复: 0

数据导入另一BUG,已解决,附代码。

[复制链接]

3

主题

1

回帖

13

积分

新手上路

Rank: 1

积分
13
发表于 2010-5-15 10:21:36 | 显示全部楼层 |阅读模式
BUG描述:
    当源数据库和目标数据库字符编码不一致时,数据导入在“导入条件”里如果写有中文,就会出现错误:查询不到数据或报代码错误(打开报错情况下)
举例:
    我有一个Access数据库,编码GBK,DT用的UTF8版。在数据导入时,我在导入条件里填写:type="IT行业"就会出现查询不到数据,页面一片空,打开报错(error_reporting(E_ALL))的情况下,会报错。
解决:
将admin/data.inc.php156行左右的[ol]
  • $result = $sc->query("SELECT * FROM {$db_table} WHERE $db_key>$lastid $db_condition LIMIT 0,1");
  • [/ol]复制代码替换为[ol]
  • $result = $sc->query("SELECT * FROM {$db_table} WHERE $db_key>$lastid ".convert($db_condition, $CFG['charset'], $db_charset)." LIMIT 0,1");
  • [/ol]复制代码
    205行
    [ol]
  • $r = $sc->get_one("SELECT min($db_key) AS fid FROM {$db_table} WHERE $db_key>$lastid $db_condition");[/ol]复制代码
    替换为
    [ol]
  • $r = $sc->get_one("SELECT min($db_key) AS fid FROM {$db_table} WHERE $db_key>$lastid ".convert($db_condition, $CFG['charset'], $db_charset));[/ol]复制代码
    209行
    [ol]
  • $r = $sc->get_one("SELECT max($db_key) AS tid FROM {$db_table} WHERE $db_key>$lastid $db_condition");[/ol]复制代码
    替换为
    [ol]
  • $r = $sc->get_one("SELECT max($db_key) AS tid FROM {$db_table} WHERE $db_key>$lastid ".convert($db_condition, $CFG['charset'], $db_charset));[/ol]复制代码
    215行
    [ol]
  • $result = $sc->query("SELECT * FROM {$db_table} WHERE $db_key>$lastid AND $db_key>=$fid $db_condition ORDER BY $db_key LIMIT 0,$num ");[/ol]复制代码
    替换为
    [ol]
  • $result = $sc->query("SELECT * FROM {$db_table} WHERE $db_key>$lastid AND $db_key>=$fid ".convert($db_condition, $CFG['charset'], $db_charset)." ORDER BY $db_key LIMIT 0,$num ");[/ol]复制代码
    另外一个问题:
    include/db_access.class.php这个文件也存在多个比较小的问题。比如32行[ol]
  • $query = $this->conn->Execute($sql);
  • return $this->limit($query, $offset, $pagesize);
  • [/ol]复制代码未进行$query是否有效,是否为空的情况下就调用了limit方法,导致程序报错崩溃。

    [ 本帖最后由 xydream 于 2010-5-15 10:30 编辑 ]
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|手机版|Archiver|destoon采集论坛

    GMT+8, 2025-11-23 05:47 , Processed in 0.013234 second(s), 20 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表