gpt4 book ai didi

php - 使用 unixODBC (DB2) + PHP + CentOS 的段错误

转载 作者:太空宇宙 更新时间:2023-11-03 17:15:04 26 4
gpt4 key购买 nike

经过 2 天的战斗,我尝试在这里寻求帮助。我在 CentOS 5.4 服务器上使用 unixODBC (2.2.11) 来处理 DB2 (iSeries) 和 PHP (5.3)。我想这是因为 PHP 从 5.1 升级到 5.3,我让 PHP 在某些查询上出现段错误。经过一些调查,我发现问题出现在一些长字符字段的查询中,例如这张表:

TABLE (
CONTRACTID NUMERIC,
SOMETEXT CHAR(583)
)

这段简单的代码引发了段错误:

try {
$conn = new PDO("odbc:".$dsn, $username, $password, array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);
}
catch (Exception $e) {
echo $e->getMessage();
}

$sql = 'SELECT * FROM LIB.TABLE ';
$stmt = $conn->prepare($sql);
$vals = $stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

是否有任何列长度限制或 unixODBC 和/或 PHP >= 5.1 的错误?这个网络应用程序运行得很好,然后我遇到了这个问题..

顺便说一句,我用装有 unixODBC 2.2.14 和 PHP 5.3 的更新的 64 位 CentOS 6.2 机器进行了测试,问题是一样的。

非常感谢任何帮助,

谢谢

法比安

更新:使用 PHP odbc 函数,它可以工作:

$conn = odbc_connect($dsn, $username, $password);
$res = odbc_exec($conn, $sql);
$rows = odbc_fetch_array($res);

所以问题更多地与 PDO 相关,知道吗?

最佳答案

这里遇到了同样的问题。发现 64 位 php-odbc 模块在返回具有 NULL 值的字段时导致段错误。解决方法是合并每个可能存在 NULL 值的字段。这不是一个好的解决方案。我正在查看 php-odbc.c 代码,但我不能保证一定会修复。

解决方法:SELECT COALESCE(CHAR(fieldname),'') FROM ...

我想我要用 32 位版本替换此服务器。我有其他的工作得很好。

关于php - 使用 unixODBC (DB2) + PHP + CentOS 的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10927983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com