mssql_fetch_field

(PHP 3, PHP 4, PHP 5)

mssql_fetch_field -- Get field information

Description

object mssql_fetch_field ( resource result [, int field_offset] )

Returns an object containing field information.

mssql_fetch_field() can be used in order to obtain information about fields in a certain query result. If the field offset isn't specified, the next field that wasn't yet retrieved by mssql_fetch_field() is retrieved.

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.

See also mssql_field_seek().



mssql_fetch_field
huszti_dot_roland_at_freemail_dot_com
11-May-2006 05:51
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.
php_rindern_de
25-Oct-2004 01:36
commenting Reynard Hilman:

for me it looks like the colstat field value of 1 in syscolumns table indicates an Identity Column.
Reynard Hilman
22-Oct-2003 07:40
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
bmaddy_at_class_dot_umn_dot_edu
29-Apr-2003 07:41
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
alonf at spiralsolutions dot com
28-Nov-2002 02:47
As kubalaa at bigfoot dot com note mssql_fetch_field->column_source return field name instead table name also with MSSQL2000 connection. Be adwised!!!
pong at taft dot org
15-Mar-2002 05:07
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.
mdean at kcnet dot com
01-Jul-2001 03:33
A quicker query to retrieve table names from the database:

select name from sysobjects where type='u'
skipsey at hotmail dot com
08-Feb-2001 07:58
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.


   function GetField($res,$field,$number) {
   return stripSlashes(mssql_result($res,$number,"$field"));
   }

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;

               }
           }
kubalaa at bigfoot dot com
04-Apr-2000 03:58
Using this function with MSSQL 7, $returned->column_source is the column name, not the table name as it should be.

<mssql_fetch_batchmssql_fetch_object>
 Last updated: Tue, 15 Nov 2005