我需要能够读取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表只包含一个表名。在线的其他人似乎报告这种方法是成功的。任何想法?
提前致谢。
答案 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)
答案 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();
?>