SQLite3查询列出数据库中的所有表只显示一个表

时间:2013-08-01 15:05:05

标签: php sqlite

我需要能够读取SQLite数据库中的所有表,而不知道将调用哪些表。我正在研究以下example.db

chinhook.db

表格

相册, 艺术家, 顾客, 雇员, 类型, 发票, InvoiceLine, 媒体类型, 播放列表, PlaylistTrack, 轨道。

目前,我正在使用以下内容......

<?php
    $db = new SQLite3('db/chinhook.db');
    $tablesquery = $db->query("SELECT name FROM sqlite_master WHERE type='table';");
    $tables = $tablesquery->fetchArray(SQLITE3_ASSOC);

    foreach($tables as $name){
       echo $name.'<br />';
    }
?>

我似乎只能得到第一张桌子的名字。我可以从其他表调用数据没问题,但sqlite_master表只包含一个表名。在线的其他人似乎报告这种方法是成功的。任何想法?

提前致谢。

4 个答案:

答案 0 :(得分:7)

试试这个:

<?php
    $db = new SQLite3('db/chinhook.db');
    $tablesquery = $db->query("SELECT name FROM sqlite_master WHERE type='table';");

    while ($table = $tablesquery->fetchArray(SQLITE3_ASSOC)) {
        echo $table['name'] . '<br />';
    }
?>

答案 1 :(得分:0)

在PDO方法中     

$db  = new PDO('sqlite:Northwind.db');

$sql = "SELECT  `name` FROM sqlite_master WHERE `type`='table'  ORDER BY name";
  $result = $db->query($sql);
      if($result){
        while($row = $result->fetch(PDO::FETCH_ASSOC)){
          echo '<li>'.$row['name'].'</li>';
        }
    }


?>

答案 2 :(得分:0)

仅供参考,如果您需要解析返回的sql

我为它实现了一个sqlite表解析器:

https://github.com/maghead/sqlite-parser

答案 3 :(得分:-1)

<?php
   $db = new SQLite3('db/chinhook.db');
   $tablesquery = $db->query("SELECT sql FROM sqlite_master WHERE name='foo'");
   $table = $tablesquery->fetchArray();
   echo '<pre>'.$table['sql'] . '</pre>';
   $db->close();
?>