ConFoo: Call for paper is now Open

sqlite_field_name

SQLiteResult->fieldName

SQLiteUnbuffered->fieldName

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

sqlite_field_name -- SQLiteResult->fieldName -- SQLiteUnbuffered->fieldNameGibt den Namen eines Feldes zurück

Beschreibung

string sqlite_field_name ( resource $result , int $field_index )

Objektorientierter Stil (Methode):

string fieldName ( int $field_index )
string fieldName ( int $field_index )

Übergibt man die Ordnungszahl einer Spalte field_index, wird sqlite_field_name() den Namen des Feldes im Abfrageergebnis result zurückgegeben.

Parameter-Liste

result

Die SQLite-Ergebnisressource. Dieser Parameter wird in der objektorientierten Notation nicht benötigt.

field_index

Die Ordnungszahl der Spalte im Abfrageergebnis.

Rückgabewerte

Liefert den Namen eines Feldes in einem SOLite-Ergebnis, identifiziert bei der Ordnungszahl einer Spalte; FALSE im Fehlerfall.

Die Groß- und Kleinschreibung der Spaltennamen, die von SQLITE_ASSOC und SQLITE_BOTH zurückgegeben werden, wird entsprechend der Konfigurationsdirektive sqlite.assoc_case geändert.

add a note add a note

User Contributed Notes 3 notes

up
1
admin at psychonautical dot org
3 years ago
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;
}
?>
up
-1
Jan Holeek
3 years ago
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)));
?>
up
-1
rrf5000 at psu dot edu
7 years ago
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>";

?>
To Top