文字

sqlite_field_name

SQLiteResult::fieldName

SQLiteUnbuffered::fieldName

(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

sqlite_field_name -- SQLiteResult::fieldName -- SQLiteUnbuffered::fieldNameReturns the name of a particular field

说明

string sqlite_field_name ( resource $result , int $field_index )

面向对象风格 (method):

string SQLiteResult::fieldName ( int $field_index )
string SQLiteUnbuffered::fieldName ( int $field_index )

Given the ordinal column number, field_index, sqlite_field_name() returns the name of that field in the result set result.

参数

result

The SQLite result resource. This parameter is not required when using the object-oriented method.

field_index

The ordinal column number in the result set.

返回值

Returns the name of a field in an SQLite result set, given the ordinal column number; FALSE on error.

SQLITE_ASSOC SQLITE_BOTH 返回的列名会依照 sqlite.assoc_case 配置选项的值决定大小写。

用户评论:

[#1] Jan Holeek [2011-01-12 05:27:08]

This code works with SQlite version 3 databases. 
<?php
function sqlite_field_names($dbfile$tablename){
    try
      {
    
$db = new PDO("sqlite:".$dbfile);
    
$sql=$db->query("SELECT sql FROM sqlite_master WHERE tbl_name='".$tablename."'");
    foreach(
$sql as $row)
        {
        
$fields $row["sql"];
        }
    
$db NULL;
   }
   catch(
PDOException $e)
   {
    print 
"Exception : ".$e->getMessage();
   }
    
$cut=strtok($fields,"(");
    while(
$fieldnames[]=strtok(",")) {};
    
array_pop($fieldnames);
    foreach(
$fieldnames as $no => $field)
        if (
strpos($field"PRIMARY KEY")){
            
strtok($field,"(");
            
$primary=strtok(")");
            unset(
$fieldnames[$no]);
        } else
            
$fieldnames[$no]=strtok($field" ");
    return 
$fieldnames;
}

print_r(array_values(sqlite_field_names($dbfile$tablename)));
?>

[#2] admin at psychonautical dot org [2010-11-09 23:58:17]

It's not the most elegant way, but it works:

<?php
function sqlite_field_names($db$tablename){
    
$sq5=sqlite_single_query($db"SELECT sql FROM sqlite_master WHERE tbl_name='".$tablename."'"SQLITE_NUM);
    
$kommando=$sq5[0];
    
$cut=strtok($kommando,"(");
    while(
$fieldnames[]=strtok(",")) {};
    
array_pop($fieldnames);
    foreach(
$fieldnames as $no => $field)
        if (
strpos($field"PRIMARY KEY")){
            
strtok($field,"(");
            
$primary=strtok(")");
            unset(
$fieldnames[$no]);
        } else
            
$fieldnames[$no]=strtok($field" ");
    return 
$fieldnames;
}
?>

[#3] rrf5000 at psu dot edu [2007-06-22 01:03:13]

While working with SQLite using its object-oriented mode, I found need to display a column/field name without knowing what it was in advance.  I couldn't find any examples on the Internet, just this document.  So, for anyone who happens to need to do this, here's an example.

<?php

$db 
"db/database.sqlite";

// create new database (OO interface)
$dbo = new SQLiteDatabase("$db");

// create table foo and insert sample data
$dbo->query("
 CREATE TABLE foo(id INTEGER PRIMARY KEY, name CHAR(255));
 INSERT INTO foo (name) VALUES('Ilia1');
 INSERT INTO foo (name) VALUES('Ilia2');
 INSERT INTO foo (name) VALUES('Ilia3');
"
);

$query "SELECT * FROM foo;";

$result $dbo->query($query) or die("Error in query");

echo 
"
<table border='1' cellpadding='10'>
 <tr>
  <td>"
.$result->fieldName(0)."</td>
  <td>"
.$result->fieldName(1)."</td>
 </tr>"
;

// iterate through the retrieved rows
while ($result->valid()) {
  
// fetch current row
  
$row $result->current();
  echo 
"
 <tr>
  <td>"
.$row[0]."</td>
  <td>"
.$row[1]."</td>
 </tr>"
;
  
// proceed to next row
  
$result->next();
}

echo 
"</table>";

?>

上一篇: 下一篇: