【问题标题】:PHP OpenEdge ODBC not returning field namesPHP OpenEdge ODBC 不返回字段名称
【发布时间】:2018-04-19 04:55:05
【问题描述】:

将我们的物理服务器迁移到虚拟机,并遇到使用 OpenEdge ODBC 抓取数据的页面问题。本地机器正在返回正确的数据和数组格式。 VM 将值作为字段名称返回,并且还缺少一些字段。

本地机器结果:

[billoflading] => 36003
[Codcliente] => 785
[Confirmado] => 0
[Enviara] => 
[Exportado] => 0
[Fembarcado] => 2017-11-02
[Hembarcado] => 52856
[Linea] => 
[pull_num] => 105461
[Salesorder] => 1151086
[Tipo] => 
[Trailer] => 7327
[transmitido] => 1

虚拟机结果:

[36003] => 36003
[785] => 785
[0] => 0
[] => 
[2017-11-02] => 2017-11-02
[52856] => 52856
[105461] => 105461
[1151086] => 1151086
[7327] => 7327
[1] => 1

测试机器和虚拟机使用相同版本的代码和 OpenEdge 驱动程序。 PHP 版本不同,但物理服务器(仍然有效)在旧版本上。检查了 php.ini,它们的配置完全相同。我们使用的是 Laravel,但所有 3 个版本(本地、VM 和物理)都是相同的。

代码sn-p:

    $conn_id = odbc_connect("****","****","****", SQL_CUR_USE_ODBC);
    $sql = "Select * FROM PUB.Shipper where billoflading ='36003'";

    $result = odbc_do($conn_id, $sql);

    echo "<pre>";

    while($row = odbc_fetch_array($result)){
        print_r($row);
    }

    echo "</pre>";

感谢任何帮助!

【问题讨论】:

    标签: php laravel odbc openedge


    【解决方案1】:

    使用odbc_field_name() 获取每个位置的字段名称,例如这应该显示“billoflading”:

    echo odbc_field_name( $conn_id, 1 );
    

    【讨论】:

    • 不走运。字段名称显示为值。还尝试了别名,字段名称也保留了值:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 2018-06-30
    • 2021-07-27
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    相关资源
    最近更新 更多