通过PHP odbc获取时,Ntext字段的值为假
我正在使用odbc\U exec获取的资源上的odbc\U结果在HTML表中提示MS Server上的查询结果 我的问题是,ntext字段的值为False 为了解决这个问题,我可以做一个rtrimcastnext_字段作为VARCHAR8000。将所有的ntext字段放在视图的末尾也可以工作,但会破坏显示。 当我设计查询时,当我知道我使用的是哪些字段,但它不再适用于SELECT*FROM RANDOMTABLE查询时,这种方法就可以工作了 因此,我的问题是:如何才能获得正确的ntext字段值,而不管它是否存在,它的位置或这种类型的字段的数量如何 当然,T-SQL端和PHP-ODBC端解决方案都可以接受通过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函数发送一个类似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并重试?