经过2天的战斗,我尝试在这里寻求帮助。我正在使用 unixODBC (2.2.11) 在 CentOS 5.4 服务器上使用 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 是否有任何列长度限制或错误?这个网络应用程序工作得很好,然后我遇到了这个问题..
顺便说一句,我使用更新的 64 位 CentOS 6.2 机器和 unixODBC 2.2.14 和 PHP 5.3 进行了测试,问题是一样的。
非常感谢任何帮助,
谢谢
法比恩
更新: 使用 PHP odbc 函数,它可以工作:
$conn = odbc_connect($dsn, $username, $password);
$res = odbc_exec($conn, $sql);
$rows = odbc_fetch_array($res);
所以这个问题更多地与PDO有关,知道吗?