列出生成的表列名列表中的所有表内容

时间:2014-05-10 18:28:02

标签: php sqlite

我有一段代码,它给出了一个特定表的所有列名列表。我可以将此列表用作我的$ row [' VARIABLE']而不是指定每一行?

可以看到表名的当前输出here这是文本的第二段,第一段是我的表名(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";

}
?>

2 个答案:

答案 0 :(得分:1)

是的,您可以将变量用于数组的索引值。例如,

$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";


    }

答案 1 :(得分:0)

我使用以下命令以按照表中定义的顺序获取列名列表。我在保存数据时使用它来填充插入/选择。

sel columnname
from dbc.columns
where databasename='databasename'
and tablename='tablename'
order by columnid;