• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mssql_field_name()

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

    Get the name of a field

    Warning

    This function wasREMOVEDin PHP 7.0.0.

    Alternatives to this function include:

    说明

    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
    

    参见

    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;