【问题标题】:List all table contents from generated list of table column names从生成的表格列名列表中列出所有表格内容
【发布时间】:2014-05-10 18:28:01
【问题描述】:

我有一段代码,它为我提供了一个特定表的所有列名的列表。我可以将此列表用作我的 $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";

}
?>

【问题讨论】:

标签: php sqlite


【解决方案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";


    }

【讨论】:

  • 你真是个天才,我在这个问题上摸不着头脑!你的代码很好用。非常感谢您花时间在这个标记上。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多