Php ibase\u fetch\u assoc在windows xp上返回错误

Php ibase\u fetch\u assoc在windows xp上返回错误,php,interbase,Php,Interbase,这是我用来从InterBase数据库获取一些数据的简单代码: <?php $host = 'localhost:C:/ME/DB/test.GDB'; $username='SYSDBA'; $password='*******'; if (!($dbh=ibase_connect($host, $username, $password, 'ISO8859_1', 0, 1))) die('Could not connect: ' . ibase_errmsg()); $st

这是我用来从InterBase数据库获取一些数据的简单代码:

<?php
$host = 'localhost:C:/ME/DB/test.GDB';
$username='SYSDBA';
$password='*******';

if (!($dbh=ibase_connect($host, $username, $password, 'ISO8859_1', 0, 1)))
    die('Could not connect: ' .  ibase_errmsg());

$stmt = 'SELECT * FROM DB where CODE >= 4400';

$sth = ibase_query($dbh, $stmt);
$letters = array();
while ($row = ibase_fetch_assoc($sth)) {
    echo $row['CODE'] . ' ';
}

ibase_free_result($sth);
ibase_close($dbh);
?>

该代码在windows 7上运行良好,但在XP上(这是代码在生产中应该工作的地方),它返回以下错误:

ibase_fetch_assoc():算术异常、数字溢出或字符串 截断不能在字符集之间音译字符

有人知道怎么做吗

附言。 这里的文件说

如果您遇到诸如“算术异常、数字溢出或 字符串截断。无法在字符之间转换字符 设置“(当您尝试使用带有重音符号的字符时会发生这种情况) 使用此选项和ibase_query()之后,必须设置字符集 (即ISO8859_1或您当前的字符集)


这就是我的解决方案吗?如果是,我应该如何设置字符集?

您需要在ibase会话中设置正确的字符集。如果未设置,php将遵循默认设置。由于您已经设置了字符集,因此数据库中的数据可能不是ISO-8859-1中的有效数据

连接到数据库时,将字符集设置为ibase_connect中的第四个参数。 您必须设置“正确”的字符集,或者在某些情况下,您可以使用字符集“NONE”,如果使用“NONE”,您将不会进行任何字符转换,并且使用或多或少的原始数据

尝试连接到:

if (!($dbh=ibase_connect($host, $username, $password, 'NONE', 0, 1)))
    die('Could not connect: ' .  ibase_errmsg());