亲爱的互联网聪明人,
在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转换为列的实际名称?所以它会返回Type:INT,Type = VARCHAR。
感谢您的帮助。
答案 0 :(得分: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;
}
}