【问题标题】:PDO Fetch assoc iSeries AS400 unixodbc only returns first letter of columnPDO Fetch assoc iSeries AS400 unixodbc 仅返回列的第一个字母
【发布时间】:2016-05-11 13:00:57
【问题描述】:

使用 PDO ASSOC 语句时,我只得到列的第一个字母,而不是完整的。有任何想法吗 ?更多信息如下:

通过 PHP 获取关联的小代码块:

$pdo = new PDO("xxx", "user","pwd");
$pdo->setAttribute(PDO::ATTR_ORACLE_NULLS, PDO::NULL_TO_STRING);
$query = $pdo->query("SELECT TRND.TRANID FROM PCRMTRND AS TRND");
$query->execute();
$tmp = array();
while($row=$query->fetch(PDO::FETCH_ASSOC)) {
        array_push($tmp,$row);
}

填充数组 tmp 后:

Var DUMP 每一行:

ODBC 设置:

[xxx]
Description             = iSeries ODBC
Driver                  = IBM i Access ODBC Driver
System                  = /
UserID                  = 
Password                = 
Naming                  = 0
DefaultLibraries        = QGPL
Database                =
ConnectionType          = 0
CommitMode              = 2
ExtendedDynamic         = 1
DefaultPkgLibrary       = QGPL
DefaultPackage          = A/DEFAULT(IBM),2,0,1,0,512
AllowDataCompression    = 1
LibraryView             = 0
AllowUnsupportedChar    = 0
ForceTranslation        = 0
Trace                   = 0

【问题讨论】:

  • 为什么要将结果添加到数组中而不是回显出来?您确定您的代码旨在测试您描述的行为吗?
  • 是的。我只是将所有结果添加到一个数组中。我可以在调试中看到数组只有一个键字母
  • 很遗憾,我们看不到它。为了获得帮助,您需要提供您正在使用的代码以及您拥有的实际输出
  • 我已经对帖子进行了更多编辑,但我猜这是 PHP INI 中的配置选项或 ODBC 中的设置。
  • 这张照片是什么?你不能只做$row=$query->fetch(PDO::FETCH_ASSOC); var_dump($row); 并检查输出吗?

标签: php pdo ibm-midrange unixodbc


【解决方案1】:

我遇到了同样的问题,似乎与区域设置有关。当我将 LC_ALL 从“en_US.UTF-8”更改为“en_US.ISO-8859-1”时,问题就消失了。因此我没有 UTF 格式的输出 :(

【讨论】:

    猜你喜欢
    • 2017-04-17
    • 2016-07-23
    • 2012-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    相关资源
    最近更新 更多