SQLite v2.8(PHP5)中列的元数据
如何使用PHP5(比如mysql的mysql\u fetch\u字段)为sqlitev2.8表中的每一列获取元数据/约束(特别是主键和“允许空值”)SQLite v2.8(PHP5)中列的元数据,php,sqlite,metadata,sqlite2,Php,Sqlite,Metadata,Sqlite2,如何使用PHP5(比如mysql的mysql\u fetch\u字段)为sqlitev2.8表中的每一列获取元数据/约束(特别是主键和“允许空值”) sqlite\u fetch\u column\u types(OO:$db->fetchColumnTypes)只获取列名和数据类型: SQLITE_MASTER具有该信息,但不作为变量。示例: 从SQLITE_MASTER中选择名称 。。。SQLITE_MASTER仅输出具有此结构的数组(v2.8): (什么是“rootpage”?)当我在Z
sqlite\u fetch\u column\u types
(OO:$db->fetchColumnTypes
)只获取列名和数据类型:SQLITE_MASTER具有该信息,但不作为变量。示例:
从SQLITE_MASTER中选择名称代码>
。。。SQLITE_MASTER仅输出具有此结构的数组(v2.8):
(什么是“rootpage”?)当我在Zend Framework上工作时,我必须这样做才能为SQLite实现一个descripbetable()
方法。SQLite无法获得关于元数据的非常详细的信息
我所做的是运行以下SQLite查询:
PRAGMA tableinfo( <tablename> );
PRAGMA tableinfo();
请参阅标题“Pragmas以查询数据库架构”下的
此查询返回的结果集包含以下列:
- 列位置(整数)
- 列名(字符串)
- 数据类型(字符串)
- 可为空(0)与不为空(1)
- 默认值(字符串)
- 主键(1)
您可以通过下载Zend Framework并查看类Zend_Db_Adapter_Pdo_Sqlite
,方法descripbetable()
来查看PHP代码。您还可以通过framework.zend.com上的代码库浏览器在线查看源代码(尽管它通常不起作用)
FWIW,这不像mysql\u fetch\u field()
。该方法返回关于结果集的元数据,这可能与关于表的元数据不同。适用于我的示例代码片段。。。以说明比尔·卡温的解决方案(这不是试图回答我自己的问题!)
PRAGMA tableinfo( <tablename> );
$db = new SQLiteDatabase("db.sqlite2");
$rs = $db->arrayQuery("PRAGMA table_info( 'my_table' );");
print_r($rs);