通过PHP odbc获取时,Ntext字段的值为假

通过PHP odbc获取时,Ntext字段的值为假,php,tsql,odbc,Php,Tsql,Odbc,我正在使用odbc\U exec获取的资源上的odbc\U结果在HTML表中提示MS Server上的查询结果 我的问题是,ntext字段的值为False 为了解决这个问题,我可以做一个rtrimcastnext_字段作为VARCHAR8000。将所有的ntext字段放在视图的末尾也可以工作,但会破坏显示。 当我设计查询时,当我知道我使用的是哪些字段,但它不再适用于SELECT*FROM RANDOMTABLE查询时,这种方法就可以工作了 因此,我的问题是:如何才能获得正确的ntext字段值,而

我正在使用odbc\U exec获取的资源上的odbc\U结果在HTML表中提示MS Server上的查询结果

我的问题是,ntext字段的值为False

为了解决这个问题,我可以做一个rtrimcastnext_字段作为VARCHAR8000。将所有的ntext字段放在视图的末尾也可以工作,但会破坏显示。 当我设计查询时,当我知道我使用的是哪些字段,但它不再适用于SELECT*FROM RANDOMTABLE查询时,这种方法就可以工作了

因此,我的问题是:如何才能获得正确的ntext字段值,而不管它是否存在,它的位置或这种类型的字段的数量如何

当然,T-SQL端和PHP-ODBC端解决方案都可以接受


我提前非常感谢您。

我最终找到了一个解决方案,而不是向我的odbc\u exec函数发送一个类似SELECT的查询* 从MyTable中,我创建了以下函数:

$SQLCodePrep = "SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
                FROM INFORMATION_SCHEMA.COLUMNS
                WHERE TABLE_NAME = 'MyTable'";

$result=odbc_exec($conn, $SQLCodePrep);
$ColumnList = QueryPrompter::InsertIntoArray($result);
              # This function take as argument the result of a query and put each row in an array, and each of these arrays in a bigger array (wich represent the table)


$SQLCode = "SELECT "; 

for ($i=0; $i<count($ColumnList); $i++)
{
    if (in_array($ColumnList[$i][1], $DefaultArray = array('ntext', 'text', 'image')) OR (in_array($ColumnList[$i][1], $DefaultArray = array('nvarchar', 'varchar')) AND $ColumnList[$i][2] == '-1'))
    {
        $Column = "RTRIM(CAST(".$ColumnList[$i][0]." AS VARCHAR(8000))) AS '".$ColumnList[$i][0]."'";
    }
    else
    {
        $Column = $ColumnList[$i][0];           
    }


    if($i < count($ColumnList)-1)
    {
        $Column .= ", ";
    }

    $SQLCode .= $Column;
}


$SQLCode .= " FROM MyTable";
然后我们可以做一个$result=odbc_exec$conn$SQLCode;正如我们过去所做的那样,一切都按我所希望的那样运行

ntext\u字段已被弃用。将其更改为nvarcharmax并重试?