1

我试图在 MS SQL 数据库中显示字段的内容,其数据类型是“文本”。当我在 PC 上使用 MS Excel 连接到数据库时,值类似于:

发货时间:12 年 10 月 18 日收费 IPEC 内容编号:XXX XXX XXXX

当我使用适用于 Linux 的 Microsoft ODBC 驱动程序通过 PHP 连接到数据库时,文本字段的输出将显示随机字符,每次运行完全相同的脚本时这些字符都会略有不同。这是它最后四次输出的内容:

Xisep)!ØwXment.class.php))

5isep)!ment.class.php))

µ}isep)!Ø}ment.class.php))

t)!!Owner_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!

&Èö×!!ö×Y!

4

1 回答 1

2

看起来你正在溢出。由于某种原因,SQL 将您的文本字段的长度作为 0 传递,这对 SQL 表示“长”,但对 PHP 表示“我不知道”,因此 PHP 在其预期数据(或其他内容)的位置显示其内存中的任何内容像那样 - 任何 PHP 专家愿意解释吗?)。

我以前用 varchar(max) 见过这个,但不是文本。(转换为)文本通常是修复它的方法。所以也许我错了。

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

于 2013-03-28T06:05:38.077 回答