mssql_fetch_field

(PHP 4, PHP 5, PECL odbtp >= 1.1.1)

mssql_fetch_fieldGet field information

Description

object mssql_fetch_field ( resource $result [, int $field_offset = -1 ] )

mssql_fetch_field() can be used in order to obtain information about fields in a certain query result.

Parameters

result

The result resource that is being evaluated. This result comes from a call to mssql_query().

field_offset

The numerical field offset. If the field offset is not specified, the next field that was not yet retrieved by this function is retrieved. The field_offset starts at 0.

Return Values

Returns an object containing field information.

The properties of the object are:

  • name - column name. if the column is a result of a function, this property is set to computed#N, where #N is a serial number.
  • column_source - the table from which the column was taken
  • max_length - maximum length of the column
  • numeric - 1 if the column is numeric
  • type - the column type.

Examples

Example #1 mssql_fetch_field() example

<?php
// Connect to MSSQL and select the database
mssql_connect('MANGO\SQLEXPRESS''sa''phpfi');
mssql_select_db('php');

// Send a select query to MSSQL
$query mssql_query('SELECT * FROM [php].[dbo].[persons]');

// Construct table
echo '<h3>Table structure for \'persons\'</h3>';
echo 
'<table border="1">';

// Table header
echo '<thead>';
echo 
'<tr>';
echo 
'<td>Field name</td>';
echo 
'<td>Data type</td>';
echo 
'<td>Max length</td>';
echo 
'</tr>';
echo 
'</thead>';

// Dump all fields
echo '<tbody>';

for (
$i 0$i mssql_num_fields($query); ++$i) {
    
// Fetch the field information
    
$field mssql_fetch_field($query$i);

    
// Print the row
    
echo '<tr>';
    echo 
'<td>' $field->name '</td>';
    echo 
'<td>' strtoupper($field->type) . '</td>';
    echo 
'<td>' $field->max_length '</td>';
    echo 
'</tr>';
}

echo 
'</tbody>';
echo 
'</table>';

// Free the query result
mssql_free_result($query);
?>

See Also

Коментарии

Using this function with MSSQL 7, $returned->column_source is the column name, not the table name as it should be.
2000-04-04 18:58:58
http://php5.kiev.ua/manual/ru/function.mssql-fetch-field.html
It seems fairly hard to get a list of the tables from your database using MSSQL but this seems to do the trick. This is set to get only the User Tables and ignores the sytem tables.

<?php
mssql_connect
("server","","") or die ("help me!");
mssql_select_db("") or die ("Noooo!");

$result mssql_query ("sp_tables");
$fields mssql_num_fields ($result);
$rows   mssql_num_rows ($result);

for (
$f=0$f<$rows$f++) {   
   
$CHKTYPE=GetField($result,"TABLE_TYPE",$f);
   
    if(
$CHKTYPE=='TABLE'){

       
//$name = mssql_fetch_field($result, 2); 
       
$field=GetField($result,"TABLE_NAME",$f)."<br>";
        echo 
$field;

    }
}
?>
2001-02-08 09:58:53
http://php5.kiev.ua/manual/ru/function.mssql-fetch-field.html
When you mssql_fetch_field(int result), you need to do loop to get the name of each field.  Something like:

while($fld = mssql_fetch_field($rs)){
        echo $fld->name . "<br>";         
    }

I am wondering why we cannot refer it by a field number.
2002-03-15 19:07:46
http://php5.kiev.ua/manual/ru/function.mssql-fetch-field.html
As kubalaa at bigfoot dot com note mssql_fetch_field->column_source return field name instead table name also with MSSQL2000 connection. Be adwised!!!
2002-11-28 04:47:29
http://php5.kiev.ua/manual/ru/function.mssql-fetch-field.html
Be aware that this function will only return the first 30 characters of the name of the column.  If the actual column name is longer, it will be truncated.  This is at least true with the following setup:
PHP 4.3.1
MSSQL 8.00.760

Have a good day everyone!
Brian
2003-04-29 22:41:22
http://php5.kiev.ua/manual/ru/function.mssql-fetch-field.html
Автор:
If you want to describe table structure (like mysql 'desc table' command), sending this query might help: 
<?
$sql 
"SELECT c.name, c.isnullable, c.length, c.colstat, t.name type
  FROM syscolumns c, systypes t, sysobjects o
  WHERE o.name = '$table' AND o.id = c.id AND c.xtype = t.xtype"
;
?>
I suspect the colstat field in syscolumns table indicates primary key when its value is 1
2003-10-22 22:40:05
http://php5.kiev.ua/manual/ru/function.mssql-fetch-field.html
Автор:
commenting Reynard Hilman:

for me it looks like the colstat field value of 1 in syscolumns table indicates an Identity Column.
2004-10-25 04:36:17
http://php5.kiev.ua/manual/ru/function.mssql-fetch-field.html
For really detailed table information, use syscolumns, like this:

SELECT c.name, c.prec, c.scale, t.name type
  FROM syscolumns c, systypes t, sysobjects o
  WHERE o.name = 'yourtablename' AND o.id = c.id AND c.xtype = t.xtype

For other properties see the MS SQL online help. Search for 'syscolumns'.

Or an another solution:

sp_columns @table_name = 'yourtablename', @column_name = 'thecolumnname'
//no "select ..." !!!!

This gives info about only the specified column.
2006-05-11 08:51:05
http://php5.kiev.ua/manual/ru/function.mssql-fetch-field.html
If you want to describe table like DESCRIBE in MySQL you can use this:
$sql = <<<SQL
SELECT column_name,data_type,column_default,is_nullable
FROM
  information_schema.tables AS t
  JOIN
  information_schema.columns AS c ON
    t.table_catalog=c.table_catalog AND
    t.table_schema=c.table_schema AND
    t.table_name=c.table_name
WHERE
  t.table_name='TABLE-NAME'
SQL;
2007-08-02 10:43:13
http://php5.kiev.ua/manual/ru/function.mssql-fetch-field.html
Автор:
kubalaa at bigfoot dot com first reported the problem that column_source contains the FIELD name instead of the source TABLE name 04-Apr-2000 03:58. The bug has been reported as well.

For those who wonder if it was fixed over the past 8 years: No, the bug still is the same, no workaround available.
2008-08-20 06:22:03
http://php5.kiev.ua/manual/ru/function.mssql-fetch-field.html

    Поддержать сайт на родительском проекте КГБ