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)));
?>
sqlite_field_name
SQLiteResult::fieldName
SQLiteUnbuffered::fieldName
(PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)
sqlite_field_name -- SQLiteResult::fieldName -- SQLiteUnbuffered::fieldName — Restituisce il nome di un particolare campo
Descrizione
$result
, int $field_index
)Stile orientato agli oggetti (metodo):
$field_index
)$field_index
)
Dato il numero ordinale di colonna, field_index,
sqlite_field_name() restituisce il nome del campo dal set di risultati indicato in
result.
Elenco dei parametri
-
result -
Risorsa risultato di SQLite. Questo parametro non รจ richiesto quando si utilizza la funzione nella versione ad oggetti.
-
field_index -
Numero ordinale della colonna nel set di risultati.
Valori restituiti
Restituisce il nome del campo dal set di risultati SQLite, dato il numero della colonna,
oppure FALSE in caso di errore.
I nomi delle colonne restituiti da
SQLITE_ASSOC e da SQLITE_BOTH saranno
maiuscoli o minuscoli in base al valore del parametro di configurazione
sqlite.assoc_case
.
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;
}
?>
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>";
?>
