Php 如何使用Microsoft ODBC Linux驱动程序正确显示“文本”数据?当前显示为随机字符

Php 如何使用Microsoft ODBC Linux驱动程序正确显示“文本”数据?当前显示为随机字符,php,sql-server,odbc,Php,Sql Server,Odbc,我试图显示MS SQL数据库中字段的内容,其数据类型为“text”。当我在PC上使用MS Excel连接到数据库时,该值如下所示: 装运日期:12年10月18日收费IPEC含意编号:XXX XXX XXXX 当我使用MicrosoftODBCDriverforLinux使用PHP连接到数据库时,文本字段的输出将显示随机字符,每次运行完全相同的脚本时,这些字符略有不同。以下是它最后四次输出的内容: 西塞普!ØwXment.class.php 5isep!php.class.php µ}isep!Ø

我试图显示MS SQL数据库中字段的内容,其数据类型为“text”。当我在PC上使用MS Excel连接到数据库时,该值如下所示:

装运日期:12年10月18日收费IPEC含意编号:XXX XXX XXXX

当我使用MicrosoftODBCDriverforLinux使用PHP连接到数据库时,文本字段的输出将显示随机字符,每次运行完全相同的脚本时,这些字符略有不同。以下是它最后四次输出的内容:

西塞普!ØwXment.class.php

5isep!php.class.php

µ}isep!Ø}ment.class.php

t!!业主(IDt)8

不确定从哪里得到'ment.class.php'位。这看起来像是我的一个类名称的结尾,但不是包含在这个特定脚本中的类。司机坏了还是怎么了?所有其他数据类型int、varchar、datetime等似乎显示正确,问题似乎只发生在这一个文本字段中

代码如下:

<?php

require('ConnectWise.inc.php');

$config = new CW_Config;

// Connect to database
$dbcnx = odbc_connect("ConnectWise", $config->db_username, $config->db_password);

// Query database
$query = "select * from Billing_Log where Invoice_Number = '24011'";
$result = odbc_exec($dbcnx, $query);
while ($row = odbc_fetch_array($result)) {
    echo $row['Top_Comment'] . "\n";
}

odbc_close($dbcnx);
以下是我最近几次尝试的结果:

\3Èää!!äY

öÈö§!!!

&Èö×!!ö×Y


看起来你有点不知所措了。出于某种原因,SQL将文本字段的长度传递为0,这对于SQL意味着长,但是对于PHP意味着我不知道,因此PHP在其预期数据或类似的位置显示其内存中的任何内容-有PHP专家愿意解释吗

我以前看过varcharmax,但没看过文本。转换为文本通常是解决问题的方法。也许我错了


希望这能有所帮助。我不是PHP开发人员,我只是偶尔需要使用它,这听起来很像我以前经历过的痛苦经历:

看起来你的PHP代码有问题。我想我们需要看看。@case1352嗨,伙计们,我添加了代码。有什么想法吗?谢谢你的回复-这是有道理的,尽管它很令人沮丧!。我尝试更改查询,从Billing_Log中选择SUBSTRINGTop_Comment,1,5作为mystring,其中Invoice_Number='24011',认为这可能会缓解溢出问题。没有这样的运气。这似乎与你的理论一致吗?