mssql_field_name()
(PHP 4, PHP 5, PECL odbtp >= 1.1.1)
Get the name of a field
WarningThis function wasREMOVEDin PHP 7.0.0.
Alternatives to this function include:
- PDOStatement::getColumnMeta()
- sqlsrv_field_metadata()
odbc_field_name()
说明
mssql_field_name(resource $result[,int $offset= -1]): string
Returns the name of field no.$offsetin$result.
参数
- $result
The result resource that is being evaluated. This result comes from a call to mssql_query().
- $offset
The field offset, starts at 0. If omitted, the current field is used.
返回值
The name of the specified field index on success 或者在失败时返回FALSE
.
范例
Example #1 mssql_field_name() example
<?php // Send a select query to MSSQL $query = mssql_query('SELECT [username], [name], [email] FROM [php].[dbo].[userlist]'); echo 'Result set contains the following field(s):', PHP_EOL; // Dump all field names in result for ($i = 0; $i < mssql_num_fields($query); ++$i) { echo ' - ' . mssql_field_name($query, $i), PHP_EOL; } // Free the query result mssql_free_result($query); ?>
以上例程的输出类似于:
Result set contains the following field(s): - username - name - email
参见
mssql_field_length()
Get the length of a fieldmssql_field_type()
Gets the type of a field
There is a limitation of 30 characters for the field name. So if your query has `fieldname AS really_long_overly_descriptive_name`, you will only get `really_long_overly_descriptiv` back <?php // Send a select query to MSSQL $query = mssql_query('SELECT [username] AS [really_long_overly_descriptive_name], [name], [email] FROM [php].[dbo].[userlist]'); echo 'Result set contains the following field(s):', PHP_EOL; // Dump all field names in result for ($i = 0; $i < mssql_num_fields($query); ++$i) { echo ' - ' . mssql_field_name($query, $i), PHP_EOL; } // Free the query result mssql_free_result($query); ?> Outputs the following: Result set contains the following field(s): - really_long_overly_descriptiv - name - email
A simple script to walk through an MSSQL server. I'm using PHP 4.06 and Freetds 5.1 on Solaris 2.7 and Apache 1.3 Several of the msql_ functions seem to be broken/missing. This is what I found to work. <?php // -------------------------------------------------------- // URL http://server/mssqltest.php?DB=Database&table=TableName // -------------------------------------------------------- // Default settings: edit to meet your needs if (!($user)) $user=sa; if (!($pass)) $pass="password"; if (!($host)) $host="acer900"; // -------------------------------------------------- // connect to mssql server $connect = mssql_connect($host,$user,$pass) or die ($host." not accessible."); // select the database if ($DB) mssql_select_db($DB)or die('USE '.$DB.' failed!'); if (!($table)) { $query="EXEC sp_tables \"%\",\"%\",\"".$DB."\",\"'TABLE'\""; $linkcol=2; $linkcol="TABLE_NAME"; $linkformat=" <a href=\"%s?DB=".$DB."&table=%s\">%s</a> "; }else{ // tables and DB - Get DATA $query="SELECT * FROM ".$table; $linkformat=" <a href=\"%s\">%s</a> "; } if (!($DB)) { $query="EXEC sp_databases"; $linkcol=0; $linkcol="DATABASE_NAME"; $linkformat="<a href=\"%s?DB=%s\">%s</a>"; } // run query echo $query."<br>"; $result = mssql_query( $query) or die('Query failed!'); $fields = mssql_num_fields ($result) or die("Num Fields Failed"); $rows = mssql_num_rows ($result); echo "<br>Rows ".$rows." Fields ".$fields."<br>"; echo "<TABLE border=1><tr>"; // get field names for ( $f = 0 ; $f < $fields ; $f++ ){ $name = mssql_fetch_field($result, $f); echo "<td>".$f.$name->name."</td>"; // Strange here.. without the "X"'s the () is always TRUE?? if ($name->name."X" == $linkcol."X") $linkcol = $f; } echo "</tr>"; //Display Data for ($i = 0; $i < $rows ; $i =$i +1){ for ($f = 0; $f<$fields ; $f++){ $name=mssql_result($result,$i,$f); if ($f == $linkcol){ printf("<td>".$linkformat."</td>\n",$PHP_SELF, $name , $name ); } else{ echo "<td>". $name . "</td>"; } } echo "</tr>"; } echo "</TABLE><br>"; // close connection mssql_close ($connect); ?>
This function isn't supported (PHP 4.0.2) if using Sybase/FreeTDS to access SQLServer (linux/solaris/bsd/etc). Instead, use "mssql_fetch_field()" like so: $field_name = mssql_fetch_field($query_result, $field_number); print $field_name->name;