如何使用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具有信息-但不作为变量。例: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) )
(什么是“根目录”?)
参考方案
在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()
。该方法返回有关结果集的元数据,这可能与关于表的元数据不同。
我正在尝试附加多个数据库文件并从中选择。所有数据库文件都具有相同的一张表,只是值不同。这是我的方法:try { $file_db = new PDO('sqlite:dbs/wifi_16-09-01_10_03_01.db'); $file_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRM…
PHP5:获取导入的名称空间列表 - php是否可以在当前上下文中获取PHP文件中所有导入的类/命名空间的列表?例如:namespace A; use B, C\D; 我想得到这个数组:array('B', 'C\D'); 原因是我正在构建一个Mapper注册表,并且希望能够在当前上下文中使用别名类名而不是全名来查询该Mapper。例如:$registry-&g…
SQLite PDO查询未返回任何结果 - php无论查询范围如何,都不会获得结果PHP:5.3SQLite3:3.6PDO:5.3.3我认为这应该是一个非常简单的过程,但是即使环顾四周,我仍然不知道为什么我得到0个结果。这是我的代码:<?php $sqlite = new PDO('sqlite:/example.db'); $result = $sqlite->query…
PHP PDO SQLite连接 - php我创建了到数据库的连接,但是我不知道为什么它总是创建一个新的空的database.sql文件。当我重命名数据库文件时,他总是创建一个新文件,而不是给我一个错误。这是我的代码 try { $db = new PDO("sqlite:".__DIR__."/database.sql"); $db->setAttrib…
PDO PHP SQLite3数据库连接常规错误14 - php我有2个sqlite3.x数据库(来自iPhone),一个来自游戏应用程序,另一个是通讯录。我在php conf中记录日志并显示错误“ on”。使用PHP / PDO,我可以显示游戏数据库中的字段和值,包括我在结果页中捕获的图像斑点,并使用“ img src ='data:...”进行渲染。我在其他字段上使用htmlentities捕获plist二进制blo…