1

亲爱的互联网聪明人,

在 SQL Server 2000 上使用 SQLSRV 我试图使用 SQLSRV_FIELD_METADATA 函数回显列数据类型和长度,但只传递了一个表示数据类型的数字。

这是代码:

  echo '<pre>';
  echo '<ul>';
    foreach( sqlsrv_field_metadata( $stmt ) as $fieldMetadata ) {
        foreach( $fieldMetadata as $name => $value) {
           echo "<li>$name: $value</li>";
        }
        echo "<br/>";
    }
  echo '</ul>';
  echo '</pre>';

这是输出的一个片段:

Name: UNITID
Type: 4
Size: 
Precision: 10
Scale: 
Nullable: 0

Name: STOCKNUMBER
Type: 12
Size: 30
Precision: 
Scale: 
Nullable: 1

有没有办法将 Type: 4 和 Type: 12 转换为列的实际名称?因此,它将返回类型:INT 和类型:VARCHAR。

谢谢您的帮助。

4

1 回答 1

2

@Esorteric,感谢您的提示。我已经按照建议实现了一个充当类型映射的函数:

  function returnType($value) {
    switch ($value) {
        case 4:
            return "(4) SQLDMO_DTypeInt4 :: Signed integer data. The width of the integer is four bytes.";
            break;
        case 12:
            return "(12) SQLDMO_DTypeVarchar :: Variable-length character data.";
            break;
        case 93:
            return "(93) SQLDMO_DTypeDateTime4 :: ODBC SQL_TIMESTAMP_STRUCT.";
            break;
        case 5:
            return "(5) SQLDMO_DTypeInt2 :: Signed integer data. The width of the integer is two bytes.";
            break;
        case -6:
            return "(-6) SQLDMO_DTypeInt1 :: Unsigned integer data. The width of the integer is one byte.";
            break;  
        case -1:
            return "(-1) SQLDMO_DTypeText :: Long, variable-length character data.";
            break;                      
    }     

  }
于 2013-05-10T15:06:59.407 回答