![](/img/trans.png)
[英]how to get list of all column names from given table in sqlite 3 ? (table might be empty)
[英]List all table contents from generated list of table column names
我有一段代码,该代码为我提供了特定表的所有列名称的列表。 我可以将此列表用作我的$ row ['VARIABLE']而不是指定每一行吗?
表名称的当前输出可以在这里看到,这是文本的第二段,第一段是我的表名称(USERS,ADMIN_LOGIN)
我正在制作一个小的脚本,该脚本将列出一个表的所有表内容,但是该表可能会经常更改,所以我想要一个可以自动生成目录的脚本,而无需我手动重新输入所有内容就像我在下面的第二段代码中所做的一样?
多谢你们
<?php
// Display all sqlite column names for chosen table
$db = new SQLite3('data.db');
$tablesquery = $db->query("PRAGMA table_info(USERS)");
while ($table = $tablesquery->fetchArray(SQLITE3_ASSOC)) {
echo $table['name'] . '<br />';
}
// Display * from USERS
$db = new SQLite3('data.db');
$results = $db->query('SELECT * FROM USERS');
while ($row = $results->fetchArray()) {
echo "ID = ". $row['ID'] . "\n";
echo "USERNAME = ". $row['USERNAME'] ."\n";
echo "AGE = ". $row['AGE'] ."\n";
echo "LOCATION = ".$row['LOCATION'] ."\n\n";
echo "ANYTHING_ELSE = ". $row['ANYTHING_ELSE'] . "\n";
echo "EMAIL = ". $row['EMAIL'] ."\n";
echo "PROFILE_APPROVED = ". $row['PROFILE_APPROVED'] ."\n";
echo "NUMBER_OF_BATTLES = ".$row['NUMBER_OF_BATTLES'] ."\n\n";
echo "TOTAL_WINS = ".$row['TOTAL_WINS'] ."\n\n";
}
?>
是的,您可以将变量用于数组的索引值。 例如,
$row = array('col_name' => 'column value');
$index = 'col_name';
echo $row[$index]; // Equivalent to $row['col_name']. Prints "column value"
使用上述逻辑,您应该能够轻松完成所需的工作。 基本上,只需将第一个查询的列名存储到数组中,然后遍历该数组即可在每次打印行时获取列名。
试试看:
// Display all sqlite column names for chosen table
$db = new SQLite3('data.db');
$tablesquery = $db->query("PRAGMA table_info(USERS)");
$columns = array();
while ($table = $tablesquery->fetchArray(SQLITE3_ASSOC)) {
$columns[] = $table['name'];
}
// Display * from USERS
$db = new SQLite3('data.db');
$results = $db->query('SELECT * FROM USERS');
while ($row = $results->fetchArray()) {
foreach ($columns as $col)
echo $col . " = " . $row[$col] . "\n";
}
我使用以下命令以按表中定义的顺序获取列名列表。 在保存数据时,我用它来填充一个插入/选择。
sel columnname
from dbc.columns
where databasename='databasename'
and tablename='tablename'
order by columnid;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.