php - SQLite v2.8 (PHP5) 中列的元数据

标签 php sqlite metadata sqlite2

如何使用 PHP5(如 MySql 的 mysql_fetch_field)获取 SQLite v2.8 表中每一列的元数据/约束(特别是主键和“允许空”)?

sqlite_fetch_column_types(OO:$db->fetchColumnTypes)仅获取列名称和数据类型:
http://dk.php.net/manual/en/function.sqlite-fetch-column-types.php

SQLITE_MASTER 有信息 - 但不是变量。示例:
从 SQLITE_MASTER 选择名称;

... SQLITE_MASTER 仅输出具有此结构的数组 (v2.8):

[type] => table
[name] => foo
[tbl_name] => foo
[rootpage] => 3
[sql] => CREATE TABLE foo ( id INTEGER PRIMARY KEY, name CHAR(255) )

(什么是“根页面”?)

最佳答案

当我在 Zend Framework 上工作时,我必须这样做才能为 SQLite 实现一个 describeTable() 方法。 SQLite 没有任何方法来获取有关元数据的非常详细的信息。

我所做的是运行以下 SQLite 查询:

PRAGMA tableinfo( <tablename> );

参见http://www.sqlite.org/pragma.html ,在“查询数据库架构的指令”标题下。

从此查询返回的结果集包含以下列:

  • 列位置(整数)
  • 列名称(字符串)
  • 数据类型(字符串)
  • 可空 (0) 与非空 (1)
  • 默认值(字符串)
  • 主键 (1)

您可以通过下载 Zend Framework 并查看类 Zend_Db_Adapter_Pdo_Sqlite 的方法 describeTable() 来查看 PHP 代码。您还可以通过 Framework.zend.com 上的代码存储库浏览器在线查看源代码(尽管它经常不起作用)。

FWIW,这不像mysql_fetch_field()。该方法返回有关结果集的元数据,这可能与有关表的元数据不同。

关于php - SQLite v2.8 (PHP5) 中列的元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695920/

相关文章:

javascript - 永无止境的循环?

php - 是否有任何 PHP 静态分析器可以检测不存在的类方法调用?

c++ - SQLite 转义字符串 C++

java - 如何在Android中编写SQLite execSQL函数?

php - Laravel通过与其属性相同的名称获得 Eloquent 关系

php - 将计数器变量添加到变量名称

java - 数据库文件不创建 Android

sql-server - 列出所有索引

html - Google 索引使用内容而不是描述

c# - Visual Studio 2010 的可搜索自定义标签?