sqlite_field_name

SQLiteResult::fieldName

SQLiteUnbuffered::fieldName

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

sqlite_field_name -- SQLiteResult::fieldName -- SQLiteUnbuffered::fieldNameRetourne le nom du champ SQLite

Description

sqlite_field_name ( resource $result , int $field_index ) : string

Style orienté objet (méthode) :

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

sqlite_field_name() retourne le nom du champ identifié par son index numérique field_index, dans le résultat result.

Liste de paramètres

result

La ressource de résultat SQLite. Ce paramètre n'est pas requis lorsque vous utilisez la méthode orientée objet.

field_index

Nombre ordinal de la colonne dans le jeu de résultats.

Valeurs de retour

Retourne le nom du champ dans un jeu de résultats SQLite, donné par le nombre ordinal de la colonne; FALSE en cas d'erreur.

Les noms de colonnes retournés par SQLITE_ASSOC et SQLITE_BOTH suivent les règles concernant la case définie par l'option de configuration sqlite.assoc_case.

add a note add a note

User Contributed Notes 3 notes

up
1
admin at psychonautical dot org
13 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
rrf5000 at psu dot edu
17 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>";

?>
up
-2
Jan Holeek
13 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)));
?>
To Top