(PHP 5 < 5.4.0)
sqlite_fetch_column_types -- SQLiteDatabase::fetchColumnTypes — Return an array of column types from a particular table
$table_name
, resource $dbhandle
[, int $result_type
= SQLITE_ASSOC
] )面向对象风格 (method):
$table_name
[, int $result_type
= SQLITE_ASSOC
] )
sqlite_fetch_column_types() returns an array of column
data types from the specified table_name
table.
table_name
The table name to query.
dbhandle
The SQLite Database resource; returned from sqlite_open() when used procedurally. This parameter is not required when using the object-oriented method.
result_type
The optional result_type
parameter accepts a
constant and determines how the returned array will be indexed. Using
SQLITE_ASSOC
will return only associative indices
(named fields) while SQLITE_NUM
will return only
numerical indices (ordinal field numbers).
SQLITE_ASSOC
is the default for
this function.
Returns an array of column data types; FALSE
on error.
由
SQLITE_ASSOC
与 SQLITE_BOTH
返回的列名会依照 sqlite.assoc_case
配置选项的值决定大小写。
版本 | 说明 |
---|---|
5.1.0 | Added result_type |
Example #1 Procedural example
<?php
$db = sqlite_open('mysqlitedb');
sqlite_query($db, 'CREATE TABLE foo (bar varchar(10), arf text)');
$cols = sqlite_fetch_column_types('foo', $db, SQLITE_ASSOC);
foreach ($cols as $column => $type) {
echo "Column: $column Type: $type\n";
}
?>
Example #2 Object-oriented example
<?php
$db = new SQLiteDatabase('mysqlitedb');
$db->query('CREATE TABLE foo (bar varchar(10), arf text)');
$cols = $db->fetchColumnTypes('foo', SQLITE_ASSOC);
foreach ($cols as $column => $type) {
echo "Column: $column Type: $type\n";
}
?>
以上例程会输出:
Column: bar Type: VARCHAR Column: arf Type: TEXT
enthusiast (2005-03-06 08:19:20)
If I (OO version) try to add the contant SQLITE_ASSOC, (exactly as listed in the above example) it generates the following error:
SQLiteDatabase::fetchColumnTypes() expects exactly 1 parameter, 2 given in C:\....
If I remove it completely, it returns the associative array I expected.
(2005-01-10 03:01:56)
The problem with the permanently locked database file when using this function still seems to exist in PHP 5.0.3 (tested on win32).
However, you can get all the information you need about the fields of a table by using this query:
PRAGMA table_info(name_of_your_table);
hugo_pl at users dot sourceforge dot net (2004-08-17 21:55:21)
This function, and the OO version, is bugged in PHP <= 5.0.1, locking the database until you restart the webserver.
http://bugs.php.net/bug.php?id=29476