PHP Velho Oeste 2024

sqlite_field_name

SQLiteResult::fieldName

SQLiteUnbuffered::fieldName

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

sqlite_field_name -- SQLiteResult::fieldName -- SQLiteUnbuffered::fieldNameDevuelve el nombre de un campo en particular

Descripción

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

Estilo orientado a objetos (método):

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

Dado el número ordinal de columna, field_index, sqlite_field_name() devuelve el nombre de ese campo en el conjunto de resultados dado por result.

Parámetros

result

El recurso de resultados de SQLite. Este parámetro no es necesario cuando se usa el método orientado a objetos.

field_index

El número ordinal de la columna del conjunto de resultados.

Valores devueltos

Devuelve el nombre de un campo de un conjunto de resultados de SQLite, dado el número ordinal de columna; FALSE en caso de error.

Los nombre de las columnas devueltos por SQLITE_ASSOC y SQLITE_BOTH serán mayúsculas o no de acuerdo al valor de la opción de configuración 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
16 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