我怎么能得到元数据/限制(主键和"null允许"特别)中的每一列一种源码v2。8表使用PHP5(如mysql_fetch_field MySql)?

sqlite_fetch_column_types (OO: $db->fetchColumnTypes)只得到的列名和数据类型:
http://dk.php.net/manual/en/function.sqlite-fetch-column-types.php

SQLITE_MASTER有的资料-但不是作为一个变量。例如:
SELECT name FROM 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) )

(什么是"rootpage"?)

有帮助吗?

解决方案

我不得不这样做,以实现一个 describeTable() 方法对源码的时候我曾在Zend框架。源码没有任何办法获得的非常详细的信息的元数据。

我所做的就是运行以下源码查询:

PRAGMA tableinfo( <tablename> );

看看 http://www.sqlite.org/pragma.html, ,在标题"说明查询的数据库架构。"

结果设置返回的,从这个查询已列为:

  • 列位置(integer)
  • 列名(string)
  • 数据类型(string)
  • nullable(0)与not null(1)
  • 默认值(string)
  • 主键(1)

你可以查看PHP code通过下载Zend框架和寻找在课堂 Zend_Db_Adapter_Pdo_Sqlite, 方法 describeTable().你还可以查看的源网络通过代码存储库的浏览器framework.zend.com (尽管它常常是没有工作).

总的来说,这是不喜欢 mysql_fetch_field().这一方法返回的元数据有关的结果设定的,这可能不是同样的事情的元数据有关的表。

其他提示

示例代码片段,对我的工作......说明比尔Karwin的解决方案(它不是一个试图回答我的问题!)

$db = new SQLiteDatabase("db.sqlite2");  
$rs = $db->arrayQuery("PRAGMA table_info( 'my_table' );");
print_r($rs);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top