3

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

chinhook.db

专辑、艺术家、客户、员工、流派、发票、InvoiceLine、MediaType、播放列表、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

4 回答 4

11

尝试这个:

<?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 />';
    }
?>
于 2013-08-01T15:10:38.623 回答
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>';
        }
    }


?>
于 2017-03-17T06:21:30.210 回答
0

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

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

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

于 2017-05-13T11:12:32.233 回答
-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();
?>
于 2015-06-13T20:06:30.467 回答